Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Strings umstellen und sortieren

Strings umstellen und sortieren
Dieterlem
Hallo Excelfreunde,
ich habe ein Bereich ("A1:A100") in dem verschiedene Werte stehen. Diese möchte ich sortiert in eine Combobox einlesen. Leider kann ich den Bereich selbst nicht sortieren. Die Werte bestehen aus Buchstaben mit Zahlen. Die Werte sollen so in die Combobox eingelesen werden, dass die Zahlen zuerst stehen und die Buchstaben folgen. Desweiteren sollen die Werte sortiert eingelesen werden.
Beispiel IST:
Apfel 1234
Pflaume 221
Birne 2345
Apfel 3456
Birne 4567
Beispiel SOLL:
221 Pflaume
1234 Apfel
2345 Birne
3456 Apfel
4567 Birne
Ich habe zuerst versucht die Strings anhand Excelformeln umzustellen, dann zu sortieren und zuletzt in die Combobox einzulesen. Das funktioniert soweit auch aber ich suche nach einer eleganteren VBA Lösung. Kann mir jemand dabei helfen?
Gruß
Dieterlem

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Frage
09.09.2011 10:48:18
Rudi
Hallo,
immer 1 Leerzeichen zwischen Zahl und Wort und nur dort?
Gruß
Rudi
AW: Frage
09.09.2011 12:58:48
Dieterlem
Ja das ist der Fall. Es sind eine unbestimmte Anzahl von Buchstaben (die immer links stehen) gefolgt von einem Leerzeichen und einer unbestimmten Anzahl von Ziffern.
AW: Frage
09.09.2011 13:06:42
Rudi
Hall,
so?

Sub ComboDaten()
Dim arrSource, arrList(), i As Integer, j As Integer, vntTmp(1 To 2)
arrSource = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
ReDim arrList(1 To UBound(arrSource), 1 To 2)
For i = 1 To UBound(arrSource)
arrList(i, 1) = Split(arrSource(i, 1), " ")(1) * 1
arrList(i, 2) = Split(arrSource(i, 1), " ")(0)
Next
For i = 1 To UBound(arrList) - 1
For j = i + 1 To UBound(arrList)
If arrList(j, 1) 

Gruß
Rudi
Anzeige
AW: Frage
09.09.2011 14:11:42
Dieterlem
Hallo Rudi,
dein Code funktioniert klasse. Vielen Dank für die schnelle Hilfe.
Jedoch wollte ich möchte nicht die Buchstaben und Werte voneinander getrennt haben sondern dass sie umgestellt werden ( Aus "Wert 01234" wird "01234 Wert"). Wobei das eigentlich kein Problem ist. Ich kann ja die ColumnWidhts umstellen.
Was müsste ich ändern, um führende Nullen zu berücksichtigen?
Gruß
Dieterlem
AW: Frage
09.09.2011 14:21:01
Rudi
Hallo,
dann so:

Sub ComboDaten()
Dim arrSource, arrList(), i As Integer, j As Integer, vntTmp
arrSource = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
ReDim arrList(1 To UBound(arrSource))
For i = 1 To UBound(arrSource)
arrList(i) = _
Split(arrSource(i, 1), " ")(1) & _
" " & _
Split(arrSource(i, 1), " ")(0)
Next
For i = 1 To UBound(arrList) - 1
For j = i + 1 To UBound(arrList)
If arrList(j) 

Gruß
Rudi
Anzeige
AW: Frage
09.09.2011 15:03:48
Dieterlem
Danke für deine Hilfe,
das bringt mich meinem Ziel in diesem Projekt wieder etwas weiter. Mit deinen zwei Vorlagen werde ich mal etwas herumexperimentieren damit ich mein Wissen über Arrays verbessern kann.
Ich wünsche dir ein schönes Wochenende
Gruß
Dieterlem

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige