Supportnet / Forum / Tabellenkalkulation
Werte innerhalb einer Zelle sortieren
Frage
Hallo zusammen,
hat jemand eine Ahnung wie man die Werte innerhalb einer Zelle im Excel sortieren kann.
Bsp.
Wert in A1 ist " A, C, B"
Wie bekomme ich das so, dass es zu
"A, B, C" wird.
Vielen Dank schon im Voraus.
Gruß
Romy4
Antwort 1 von rainberg
Hallo Romy,
hier hilft nur, so eingeben, wie du es brauchst.
Alles andere wäre eine Arbeitsbeschaffungsmaßnahme, an der sich wohl keiner beteiligen wird.
Gruß
Rainer
hier hilft nur, so eingeben, wie du es brauchst.
Alles andere wäre eine Arbeitsbeschaffungsmaßnahme, an der sich wohl keiner beteiligen wird.
Gruß
Rainer
Antwort 2 von romy4
Reiner,
danke für die schnelle Antwort.
Das Problem liegt daran, dass ich die Daten gar nicht eingebe, sondern die bereits vorhandenen Daten auswerte.
Warum das so in der Form ursprünglich eingegeben wird ist eine andere Geschichte.
Ich habe bereits den Text in Spalten getrennt.
Ich wollte dann alles nach Zeilen sortieren und dann wieder zusammenfügen.
Doch das ist viel zu aufwendig, da man die Zeilen nicht alle zusammen sortieren kann (soviel ich weiss).
Weil ich diese Funktion nicht nur einmalig brauche, sonder immer wieder, stelle ich auch die o.g. Frage in dieser Runde.
Gruß
Romy4
danke für die schnelle Antwort.
Das Problem liegt daran, dass ich die Daten gar nicht eingebe, sondern die bereits vorhandenen Daten auswerte.
Warum das so in der Form ursprünglich eingegeben wird ist eine andere Geschichte.
Ich habe bereits den Text in Spalten getrennt.
Ich wollte dann alles nach Zeilen sortieren und dann wieder zusammenfügen.
Doch das ist viel zu aufwendig, da man die Zeilen nicht alle zusammen sortieren kann (soviel ich weiss).
Weil ich diese Funktion nicht nur einmalig brauche, sonder immer wieder, stelle ich auch die o.g. Frage in dieser Runde.
Gruß
Romy4
Antwort 3 von Saarbauer
Hallo,
wäre nach meiner Ansicht auf direktem Weg nur mit VBA zu lösen oder indirekt mit Hilfsspalten.
Sind die Texte nur wie oben dargestellt mit "A, C, B" oder auch längere bzw. unterschiedlich lange Texte?
Gruß
Helmut
wäre nach meiner Ansicht auf direktem Weg nur mit VBA zu lösen oder indirekt mit Hilfsspalten.
Sind die Texte nur wie oben dargestellt mit "A, C, B" oder auch längere bzw. unterschiedlich lange Texte?
Gruß
Helmut
Antwort 4 von coros
Hi Romy,
nachfolgends Makro kopiere in ein StandarModul kopiere in ein StandarModul und starte es über eine Schaltfläche.
Mit obigem Makro werden die Daten, die in Spalte A stehen, an den Leerzeichen getrennt und sortiert und dann wieder sortiert in Spalte A aufgeführt. Ich hoffe, Du hast das so gemeint. Wenn nicht, bei Fragen oder Problemen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nachfolgends Makro kopiere in ein StandarModul kopiere in ein StandarModul und starte es über eine Schaltfläche.
Option Explicit
Sub Daten_sortieren()
Dim Aktiver_Blattname As String, Wiederholungen_Zeile As Long, _
Wiederholungen_Spalte As Integer, Wiederholungen_Zeile_Tab2 As Long
Application.ScreenUpdating = False
Aktiver_Blattname = ActiveSheet.Name
With Worksheets.Add
.Name = "Hilfsblatt"
End With
For Wiederholungen_Zeile = 1 To Sheets(Aktiver_Blattname).Range("A65536").End(xlUp).Row
Sheets("Hilfsblatt").Cells.ClearContents
Sheets("Hilfsblatt").Range("A1") = Sheets(Aktiver_Blattname).Cells(Wiederholungen_Zeile, 1)
Sheets("Hilfsblatt").Range("A1").TextToColumns Destination:=Sheets("Hilfsblatt").Range("A1"), Space:=True
For Wiederholungen_Spalte = 2 To Sheets("Hilfsblatt").Range("IV1").End(xlToLeft).Column
Sheets("Hilfsblatt").Cells(Sheets("Hilfsblatt").Range("A65536").End(xlUp).Offset(1, 0).Row, 1) = _
Sheets("Hilfsblatt").Cells(1, Wiederholungen_Spalte)
Sheets("Hilfsblatt").Columns("A:A").Sort Key1:=Range("A1"), Order1:=xlDescending
Sheets("Hilfsblatt").Range("B1").ClearContents
For Wiederholungen_Zeile_Tab2 = 1 To Sheets("Hilfsblatt").Range("A65536").End(xlUp).Row
Sheets("Hilfsblatt").Range("B1") = Sheets("Hilfsblatt").Cells(Wiederholungen_Zeile_Tab2, 1) _
& " " & Sheets("Hilfsblatt").Range("B1")
Sheets(Aktiver_Blattname).Cells(Wiederholungen_Zeile, 1) = Sheets("Hilfsblatt").Range("B1")
Next
Next
Next
Sheets(Aktiver_Blattname).Activate
Application.DisplayAlerts = False
Sheets("Hilfsblatt").Delete
Application.DisplayAlerts = True
End Sub
Mit obigem Makro werden die Daten, die in Spalte A stehen, an den Leerzeichen getrennt und sortiert und dann wieder sortiert in Spalte A aufgeführt. Ich hoffe, Du hast das so gemeint. Wenn nicht, bei Fragen oder Problemen melde Dich bitte.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von romy4
Hallo Helmut,
die Texte sind unterschiedlich lang.
Die Darstellung "A, B, C" ist nur ein Modell zum besseren Verständnis der Ausgangssituation.
Hallo Oliver,
danke. Ich werde es gleich ausprobieren.
Gruß
Romy4
die Texte sind unterschiedlich lang.
Die Darstellung "A, B, C" ist nur ein Modell zum besseren Verständnis der Ausgangssituation.
Hallo Oliver,
danke. Ich werde es gleich ausprobieren.
Gruß
Romy4
Antwort 6 von romy4
P.S.
Oliver,
die Texte sind durch Komma getrennt, da im Text selbst Leerzeichen vorkommen können.
Ich werde es mit diesem Makro dennoch ausprobieren, um das Prinzip zu testen.
Danke nochmal.
Gruß
Romy4
Oliver,
die Texte sind durch Komma getrennt, da im Text selbst Leerzeichen vorkommen können.
Ich werde es mit diesem Makro dennoch ausprobieren, um das Prinzip zu testen.
Danke nochmal.
Gruß
Romy4
Antwort 7 von romy4
Hallo Oliver,
das ist genau das, was ich gebraucht habe.
Ich habe es gleich ausprobiert und es funktioniert.
Aber...
wie ich schon oben geschrieben habe, sind die Texte innerhalb der Zelle mit einem Komma getrennt.
D.h. ich sollte im Script das Leerzeichen gegen Komma ersetzen.
Habe es versucht selbst herauszufinden, bin aber gescheitert, da kein Fachmann im Programmieren :-((
Könntest du mir bitte sagen, wie ich das machen kann?
Danke
Gruß
Romy4
das ist genau das, was ich gebraucht habe.
Ich habe es gleich ausprobiert und es funktioniert.
Aber...
wie ich schon oben geschrieben habe, sind die Texte innerhalb der Zelle mit einem Komma getrennt.
D.h. ich sollte im Script das Leerzeichen gegen Komma ersetzen.
Habe es versucht selbst herauszufinden, bin aber gescheitert, da kein Fachmann im Programmieren :-((
Könntest du mir bitte sagen, wie ich das machen kann?
Danke
Gruß
Romy4
Antwort 8 von coros
Hi Romy4,
sorry, hat ein wenig gedauert, aber ich habe mittlerweile Feierabend gemacht und musste erst mal nach Hause fahren.
Damit Deine Daten nicht bei Leerzeichen, sondern bei Komma getrennt werden, tausche in dem Makro in der Zeile
Sheets("Hilfsblatt").Range("A1").TextToColumns Destination:=Sheets("Hilfsblatt").Range("A1"), Space:=True
das Wort "Space" gegen das Wort "Comma" aus. Damit sollte es funktionieren.
Wenn nicht, dann melde Dich bitte wieder.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
sorry, hat ein wenig gedauert, aber ich habe mittlerweile Feierabend gemacht und musste erst mal nach Hause fahren.
Damit Deine Daten nicht bei Leerzeichen, sondern bei Komma getrennt werden, tausche in dem Makro in der Zeile
Sheets("Hilfsblatt").Range("A1").TextToColumns Destination:=Sheets("Hilfsblatt").Range("A1"), Space:=True
das Wort "Space" gegen das Wort "Comma" aus. Damit sollte es funktionieren.
Wenn nicht, dann melde Dich bitte wieder.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 9 von romy4
Hallo Oliver,
genau das gleiche habe ich mir gedacht.
Ich habe bereits vorher Space gegen Comma ausgetauscht, doch irgendwie scheint es doch nicht wirklich zu funktionieren.
Ich werde es morgen von der Arbeit schreiben, da ich die Daten dort vorliegen habe...
Vielen Dank für den Support.
Gruß
Romy4
genau das gleiche habe ich mir gedacht.
Ich habe bereits vorher Space gegen Comma ausgetauscht, doch irgendwie scheint es doch nicht wirklich zu funktionieren.
Ich werde es morgen von der Arbeit schreiben, da ich die Daten dort vorliegen habe...
Vielen Dank für den Support.
Gruß
Romy4
Antwort 10 von romy4
Hallo Oliver,
habe ein wenig mit der ganzen Geschichte experimentiert.
Wenn ich Space durch Comma ersetze funktioniert das Makro fast überall.
In den Zellen wo sowohl Komma, als auch Punkt und Leerzeichen vorkommen spinnt Excel aber.
Es trennt den Text sowohl nach einem Komma, als auch nach einem Leerzeichen.
Ich muss aber noch hinzufügen, dass nach einem Komma manchmal ein Leerzeichen folgt, manchmal aber gleich ein Text.
Doch wenn ich die gleiche Spalte manuell durch den Befehl Text in Spalten trenne, wird dieser durch Excel korrekt nur an den Kommastellen getrennt.
Was kann ich falsch gemacht haben?
Danke
Gruß
Romy4
habe ein wenig mit der ganzen Geschichte experimentiert.
Wenn ich Space durch Comma ersetze funktioniert das Makro fast überall.
In den Zellen wo sowohl Komma, als auch Punkt und Leerzeichen vorkommen spinnt Excel aber.
Es trennt den Text sowohl nach einem Komma, als auch nach einem Leerzeichen.
Ich muss aber noch hinzufügen, dass nach einem Komma manchmal ein Leerzeichen folgt, manchmal aber gleich ein Text.
Doch wenn ich die gleiche Spalte manuell durch den Befehl Text in Spalten trenne, wird dieser durch Excel korrekt nur an den Kommastellen getrennt.
Was kann ich falsch gemacht haben?
Danke
Gruß
Romy4
Antwort 11 von coros
Hi Romy,
versuche mal nachfolgendes Makro, ob es damit besser geht. Wenn nicht, wäre es gut, wenn Du mir mal eine Beispieldatei zuschicken könntest, mit den textkombinationen, wie sie in Deiner ralen Datei vorkommen, damit ich diese mal 1 zu 1 vor mir sehen kann. Denn ich habe verschiedene Kombinationen damit gestest immer mit dem Ergebnis, dass die Daten danach sortiert in den Zellen standen.
Kopiere nachfolgendes Makro wieder in ein StandardModul.
Option Explicit
Wenns nicht funktioniert, dann schicke mir bitte wie oben schon geschrieben eine Beispieldatei. Die Mailadresse findest Du auf meiner HP unter anderem im Impressum. Binde in der Betreffzeile irgendwie das Wort "Supportnet" und den Namen (Nickname), unter dem Du hier gepostet hast mit ein, da ich alle Mails deren Absender ich nicht kenne, ungelesen lösche.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
versuche mal nachfolgendes Makro, ob es damit besser geht. Wenn nicht, wäre es gut, wenn Du mir mal eine Beispieldatei zuschicken könntest, mit den textkombinationen, wie sie in Deiner ralen Datei vorkommen, damit ich diese mal 1 zu 1 vor mir sehen kann. Denn ich habe verschiedene Kombinationen damit gestest immer mit dem Ergebnis, dass die Daten danach sortiert in den Zellen standen.
Kopiere nachfolgendes Makro wieder in ein StandardModul.
Option Explicit
Sub Daten_sortieren()
Dim Aktiver_Blattname As String, Wiederholungen_Zeile As Long, _
Wiederholungen_Spalte As Integer, Wiederholungen_Zeile_Tab2 As Long
Application.ScreenUpdating = False
Aktiver_Blattname = ActiveSheet.Name
With Worksheets.Add
.Name = "Hilfsblatt"
End With
For Wiederholungen_Zeile = 1 To Sheets(Aktiver_Blattname).Range("A65536").End(xlUp).Row
Sheets("Hilfsblatt").Cells.ClearContents
Sheets("Hilfsblatt").Range("A1") = Sheets(Aktiver_Blattname).Cells(Wiederholungen_Zeile, 1)
Sheets("Hilfsblatt").Range("A1").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=True, Other:=False, TrailingMinusNumbers:=True
For Wiederholungen_Spalte = 2 To Sheets("Hilfsblatt").Range("IV1").End(xlToLeft).Column
Sheets("Hilfsblatt").Cells(Sheets("Hilfsblatt").Range("A65536").End(xlUp).Offset(1, 0).Row, 1) = _
Sheets("Hilfsblatt").Cells(1, Wiederholungen_Spalte)
Sheets("Hilfsblatt").Columns("A:A").Sort Key1:=Range("A1"), Order1:=xlDescending
Sheets("Hilfsblatt").Range("B1").ClearContents
For Wiederholungen_Zeile_Tab2 = 1 To Sheets("Hilfsblatt").Range("A65536").End(xlUp).Row
Sheets("Hilfsblatt").Range("B1") = Sheets("Hilfsblatt").Cells(Wiederholungen_Zeile_Tab2, 1) _
& " " & Sheets("Hilfsblatt").Range("B1")
Sheets(Aktiver_Blattname).Cells(Wiederholungen_Zeile, 1) = Sheets("Hilfsblatt").Range("B1")
Next
Next
Next
Sheets(Aktiver_Blattname).Activate
Application.DisplayAlerts = False
Sheets("Hilfsblatt").Delete
Application.DisplayAlerts = True
End SubWenns nicht funktioniert, dann schicke mir bitte wie oben schon geschrieben eine Beispieldatei. Die Mailadresse findest Du auf meiner HP unter anderem im Impressum. Binde in der Betreffzeile irgendwie das Wort "Supportnet" und den Namen (Nickname), unter dem Du hier gepostet hast mit ein, da ich alle Mails deren Absender ich nicht kenne, ungelesen lösche.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 12 von romy4
Hallo Oliver,
habe jetzt das letzte Makro komplett übernommen.
Beim Ausführen habe ich eine Fehlermeldung bekommen. Der Debuger markierte diese drei Zeilen gelb und zeigte mit dem Pfeil auf die letzte Zeile (ab Semicolon):
Sheets("Hilfsblatt").Range("A1").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=True, Other:=False, TrailingMinusNumbers:=True
ich glaube es wäre wirklich besser wenn ich dir die Daten auszugsweise zur Verfügung stelle.
Sag bitte wie bzw. wo.
Danke
Gruß
Romy4
habe jetzt das letzte Makro komplett übernommen.
Beim Ausführen habe ich eine Fehlermeldung bekommen. Der Debuger markierte diese drei Zeilen gelb und zeigte mit dem Pfeil auf die letzte Zeile (ab Semicolon):
Sheets("Hilfsblatt").Range("A1").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=True, Other:=False, TrailingMinusNumbers:=True
ich glaube es wäre wirklich besser wenn ich dir die Daten auszugsweise zur Verfügung stelle.
Sag bitte wie bzw. wo.
Danke
Gruß
Romy4
Antwort 13 von coros
Hi Romy,
ließ meine letzte Antwort (Antwort 11), dort habe ich Dir am Ende geschrieben, wie Du an meine E-Mailadresse herankommst.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ließ meine letzte Antwort (Antwort 11), dort habe ich Dir am Ende geschrieben, wie Du an meine E-Mailadresse herankommst.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 14 von romy4
kein Thema, ich dachte ich könnte die Datei hier irgendwo posten.
Schicke ich dir morgen zu.
Danke
Gruß
Romy4
Schicke ich dir morgen zu.
Danke
Gruß
Romy4

