Anzeige
Archiv - Navigation
1372to1376
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

Zahlen im String sortieren

Zahlen im String sortieren
04.08.2014 12:22:05
,
Hallo Zusammen,
bei einer bereits gelösten Aufgabenstellung von heute, möchte ich gerne ein weiteres Makro einsetzen:
In einer Spalte habe ich Abmesseungen stehen im Format (Beispiel):
500x300x200
Nun sind die Zahlen in diesem String nicht in jeder Zeile der Spalte in der richtigen Reihenfolge (Größte, Mittlere, Kleinste) sortiert, sondern ab und zu auch bspw.
300x200x500
Bisher mache ich das "zu Fuß" über die Funktion Text in Spalten mit Trennzeichen "x" und anschließend wieder zusammensetzen mit
=Max(V1:V3)&"x"&kkleinste(V1:V3;2)&"x"&Min(V1:V3)
Mir würde ein Makro sehr helfen, dass in der Spalte, in der der Curosr steht, alle Strings durch den String mit der richtigen Reihenfolge ersetzt, ohne dass ich erst neue Hilfsspalten erzeugen muss.
Mit freundlichen Grüßen
Hans

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen im String sortieren
04.08.2014 12:48:20
Daniel
Hi
probier mal das:
Sub Test()
Dim arr
Dim rng
Dim z As Long, s As Long
Dim TT1() As String
Dim TT2(0 To 2) As Double
Dim i As Long
Set rng = Intersect(Selection.EntireColumn, Selection.Worksheet.UsedRange)
arr = rng.Value
For z = 1 To UBound(arr, 1)
For s = 1 To UBound(arr, 2)
If arr(z, s) Like "*x*x*" Then
TT1 = Split(arr(z, s), "x")
For i = 0 To 2
TT2(i) = CDbl(TT1(i))
Next
For i = 0 To 2
If TT2(i) = WorksheetFunction.Max(TT2) Then
TT1(0) = CStr(TT2(i))
ElseIf TT2(i) = WorksheetFunction.Min(TT2) Then
TT1(2) = CStr(TT2(i))
Else
TT1(1) = CStr(TT2(i))
End If
Next
arr(z, s) = Join(TT1, "x")
End If
Next s
Next z
rng.Value = arr
End Sub
Gruß Daniel

Anzeige
AW: Zahlen im String sortieren
04.08.2014 13:26:48
stormlamp
Hallo Daniel,
danke sehr - perfekt und so schnell, das man auch bei 1000 Zeilen glaubt es wäre erst gar nicht gestartet.
Mit freundlichen Grüßen
Hans

AW: Zahlen im String sortieren
04.08.2014 13:42:43
stormlamp
Hallo Daniel,
doch noch ein kleines Problem, wenn bspw. in einer Zeile der String "940x440x45Ø8" steht, läuft die Routine in den Debugger.
Zeilen, die Fehler erzeugen sollten übersprungen werden bzw. noch besser dann als Ergebnis "ungültig 940x440x45Ø8" enthalten. Geht das auch?
Mit freundlichen Grüßen
Hans

AW: Zahlen im String sortieren
04.08.2014 13:54:50
Daniel
das war jetzt nicht Teil der Beschreibung.
ob ein Text einer Zahl entspricht, kannst du mit "IF IsNumeric(TT1(i)) prüfen.
Gruß Daniel

Anzeige
AW: Zahlen im String sortieren
04.08.2014 14:08:13
Daniel
Hi
probiers mal so, Zeilen mit Text drin (dh auch die Durchmesserzeilen) werden dann übersprungen:
Sub Test()
Dim arr
Dim rng
Dim z As Long, s As Long
Dim TT1() As String
Dim TT2(0 To 2) As Double
Dim i As Long
Set rng = Intersect(Selection.EntireColumn, Selection.Worksheet.UsedRange)
arr = rng.Value
For z = 1 To UBound(arr, 1)
For s = 1 To UBound(arr, 2)
If arr(z, s) Like "*x*x*" Then
TT1 = Split(arr(z, s), "x")
For i = 0 To 2
IF IsNumeric(TT2(i)) then
TT2(i) = CDbl(TT1(i))
else
exit For
end if
Next
If i = 3 Then
For i = 0 To 2
If TT2(i) = WorksheetFunction.Max(TT2) Then
TT1(0) = CStr(TT2(i))
ElseIf TT2(i) = WorksheetFunction.Min(TT2) Then
TT1(2) = CStr(TT2(i))
Else
TT1(1) = CStr(TT2(i))
End If
Next
arr(z, s) = Join(TT1, "x")
End If
End If
Next s
Next z
rng.Value = arr
End Sub

Anzeige
AW: Zahlen im String sortieren
04.08.2014 14:24:05
stormlamp
Hallo Daniel,
einige Einträge, wie bspw. "Ø13,8x2614x1,5" laufen leider immer noch in den Debugger und werden nicht übersprungen.
Gruß
Hans

AW: Zahlen im String sortieren
04.08.2014 14:32:44
Daniel
Sorry, Tippfehler:
muss heißen: IF IsNumeric(TT1(i)) then
da du mir keine Beipspieldatei zum Testen zur verfügung gestellt hast, musst du jetzt die Fehlertests selber machen.
Gruß Daniel

AW: Zahlen im String sortieren
04.08.2014 14:50:54
stormlamp
Hallo Daniel,
herzlichen Dank, jetzt funktioniert es.
Die Datei, die ich bearbeite hat ca. 70.000 Zeilen (43MB) und da die Benutzer bei den Eingaben alle Fehler gemacht haben, die man sich vorstellen kann, hätte auch ein Auszug nicht geholfen.
Aber jetzt bin ich dank Deiner Hilfe einen großen Schritt weiter gekamm.
Gruß
Hans

Anzeige
AW: Zahlen im String sortieren
04.08.2014 15:01:19
Daniel
naja, ein Auszug mit den gängigen Fehlern würde da schon helfen.
du musst die Beispieldatei halt gezielt aus korrekten Werten und möglichen Fehlern erstellen (am besten auch so kennzeichnen).
Dann weiss man, worauf man den Code anpassen muss.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige