Supportnet / Forum / Tabellenkalkulation
zahlen sortieren ohen aufzufüllen
Frage
Hallo, ich habe eine txt Datei die Zahlen im folgenden Format enthält:
123:10:2
11:12:4
usw... irgendwelche zahlen halt. wenn ich die in excel einlese und sortiere macht er aber nicht so;
1
2
3
sondern so:
1
10
100
2
Wie mache ich es wie oben, also
1
2
3
30
...
????
Bitte helft mir, ich verzweifel schon fast... Habe 2 Stunden gegoogelt und sogar mit Access rumprobiert.
Antwort 1 von Flintstone
Hallo Hones,
wenn deine Zahlen wirklich Zahlen wären, dann würden sie auch nach ihren Werten sortiert. Da es jedoch aufgrund der zusätzlichen Doppelpunkte keinen Zahlen sondern Texte mit Ziffern sind, erfolgt die Sortierung in Excel und Access alphanumerisch. Es werden dabei die einzelnen Zeichen von links nach rechts verglichen, also erst alle ersten Zeichen, dann alle zweiten usw. Und zwar in folgender, aufsteigender Reihenfolge: (Leerzeichen) ! # $ % & ( ) * , . / : ";" ? @ [ \ ] ^ _ ` { | } ~ + < = > 0 1 2 3 4 5 6 7 8 9 A Ä B C D E F G H I J K L M N O Ö P Q R S ß T U Ü V W X Y Z
Daraus ergibt sich dann auch, dass 10 oder 100 in der Rangfolge niedriger eingestuft werden als 2.
Da wirst du wohl um das Auffüllen nicht herumkommen.
Gruß
Fred
wenn deine Zahlen wirklich Zahlen wären, dann würden sie auch nach ihren Werten sortiert. Da es jedoch aufgrund der zusätzlichen Doppelpunkte keinen Zahlen sondern Texte mit Ziffern sind, erfolgt die Sortierung in Excel und Access alphanumerisch. Es werden dabei die einzelnen Zeichen von links nach rechts verglichen, also erst alle ersten Zeichen, dann alle zweiten usw. Und zwar in folgender, aufsteigender Reihenfolge: (Leerzeichen) ! # $ % & ( ) * , . / : ";" ? @ [ \ ] ^ _ ` { | } ~ + < = > 0 1 2 3 4 5 6 7 8 9 A Ä B C D E F G H I J K L M N O Ö P Q R S ß T U Ü V W X Y Z
Daraus ergibt sich dann auch, dass 10 oder 100 in der Rangfolge niedriger eingestuft werden als 2.
Da wirst du wohl um das Auffüllen nicht herumkommen.
Gruß
Fred
Antwort 2 von nighty
hi hones :)
buedde 5 zahlen
vorher
und nacher
wie es aussehen sollte
gruss nighty
buedde 5 zahlen
vorher
und nacher
wie es aussehen sollte
gruss nighty
Antwort 3 von Flintstone
@nighty,
könntest du eventuell deinen Beitrag so abfassen, dass ihn auch solche Leute verstehen, die leider nur der deutschen Sprache mächtig sind?
könntest du eventuell deinen Beitrag so abfassen, dass ihn auch solche Leute verstehen, die leider nur der deutschen Sprache mächtig sind?
Antwort 4 von nighty
hi flintstone :)
gerne nochmal :))
gruss nighty
von diesen zahlen
123:10:2
11:12:4
haette ich gerne ein beispiel von 5 oder auch 3 zahlen wie sie vor und nach der sortierung aussehen sollten,da ich mit obigen zahlen nichts so recht anzufangen weiss :))
ein beispiel und es steht der lösung nichts mehr im wege :))
oder hast du gar langeweile :))
gerne nochmal :))
gruss nighty
von diesen zahlen
123:10:2
11:12:4
haette ich gerne ein beispiel von 5 oder auch 3 zahlen wie sie vor und nach der sortierung aussehen sollten,da ich mit obigen zahlen nichts so recht anzufangen weiss :))
ein beispiel und es steht der lösung nichts mehr im wege :))
oder hast du gar langeweile :))
Antwort 5 von nighty
hi flintstone :))
hier schon mal ein kleines beispiel wie sich ein string zerlegen laesst und anders wie üblich ist sich sortiert,falls es dich interessiert :)))
gruss nighty
hier werden sollche zahlen bzw string sortiert
vorher
123/129
456/2
123/1
123/122
nachher
123/1
456/2
123/122
123/129
Option Explicit
Sub suchen()
Dim zaehler0 As Long
Dim zaehler2 As Long
Dim zaehler3 As Integer
Dim zaehler4 As Boolean
Dim neu As String
For zaehler0 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
For zaehler3 = 1 To Len(Cells(zaehler0, 1))
If Mid(Cells(zaehler0, 1), zaehler3, 1) = "/" Then
If Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)) - Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))))) = 1 Then
neu = "00" + Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))
Cells(zaehler0, 1) = neu + Mid(Cells(zaehler0, 1), 1, zaehler3 - 1)
zaehler4 = True
End If
If Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)) - Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))))) = 2 _
And zaehler4 = False Then
neu = "0" + Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))
Cells(zaehler0, 1) = neu + Mid(Cells(zaehler0, 1), 1, zaehler3 - 1)
zaehler4 = True
End If
If Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)) - Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))))) = 3 _
And zaehler4 = False Then
neu = Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))
Cells(zaehler0, 1) = neu + Mid(Cells(zaehler0, 1), 1, zaehler3 - 1)
End If
End If
Next zaehler3
zaehler4 = False
Next zaehler0
Rows("1:65535").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For zaehler2 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
If Cells(zaehler2, 1) <> "" Then
Cells(zaehler2, 1) = Mid(Cells(zaehler2, 1), 4, Len(Cells(zaehler2, 1) - 3)) + "/" + Mid(Str(Val(Mid(Cells(zaehler2, 1), 1, 3))), 2, Len(Str(Val(Mid(Cells(zaehler2, 1), 1, 3)))) - 1)
End If
Next zaehler2
End Sub
hier schon mal ein kleines beispiel wie sich ein string zerlegen laesst und anders wie üblich ist sich sortiert,falls es dich interessiert :)))
gruss nighty
hier werden sollche zahlen bzw string sortiert
vorher
123/129
456/2
123/1
123/122
nachher
123/1
456/2
123/122
123/129
Option Explicit
Sub suchen()
Dim zaehler0 As Long
Dim zaehler2 As Long
Dim zaehler3 As Integer
Dim zaehler4 As Boolean
Dim neu As String
For zaehler0 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
For zaehler3 = 1 To Len(Cells(zaehler0, 1))
If Mid(Cells(zaehler0, 1), zaehler3, 1) = "/" Then
If Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)) - Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))))) = 1 Then
neu = "00" + Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))
Cells(zaehler0, 1) = neu + Mid(Cells(zaehler0, 1), 1, zaehler3 - 1)
zaehler4 = True
End If
If Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)) - Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))))) = 2 _
And zaehler4 = False Then
neu = "0" + Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))
Cells(zaehler0, 1) = neu + Mid(Cells(zaehler0, 1), 1, zaehler3 - 1)
zaehler4 = True
End If
If Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)) - Len(Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))))) = 3 _
And zaehler4 = False Then
neu = Mid(Cells(zaehler0, 1), zaehler3 + 1, Len(Cells(zaehler0, 1)))
Cells(zaehler0, 1) = neu + Mid(Cells(zaehler0, 1), 1, zaehler3 - 1)
End If
End If
Next zaehler3
zaehler4 = False
Next zaehler0
Rows("1:65535").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For zaehler2 = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
If Cells(zaehler2, 1) <> "" Then
Cells(zaehler2, 1) = Mid(Cells(zaehler2, 1), 4, Len(Cells(zaehler2, 1) - 3)) + "/" + Mid(Str(Val(Mid(Cells(zaehler2, 1), 1, 3))), 2, Len(Str(Val(Mid(Cells(zaehler2, 1), 1, 3)))) - 1)
End If
Next zaehler2
End Sub
Antwort 6 von Event
Dieter Nuhr meint:
Wenn Du keine Ahnung hast - einfach ´mal die Klappe halten!
und warum heißt Du Feuerstein?ß?
Wenn Du keine Ahnung hast - einfach ´mal die Klappe halten!
und warum heißt Du Feuerstein?ß?
Antwort 7 von nighty
hi event :)
netter umgangston hat sich hier entwickelt :(
gruss nighty
netter umgangston hat sich hier entwickelt :(
gruss nighty
Antwort 8 von Lucky777
Warum heißt Du nighty ist es nicht egal wie man heißt es gibt doch wichtigeres im LEBEN....

