Microsoft Excel

Herbers Excel/VBA-Archiv

Zahlenliste wird alphanumerisch sortiert

Betrifft: Zahlenliste wird alphanumerisch sortiert von: Frank
Geschrieben am: 04.07.2007 15:43:51

Hallo,

ich habe in einer Tabelle eine Liste von Einträgen des Formats

9G1
9G10
9G8
9G100
9G15 usw.

zu sortieren. Das 9G vor der Zahl bleibt immer gleich.Ich möchte nun eine normale numerische Sortierung und nicht die alphanumerische Sortierung von Excel.
Das Endergebnis sollte also so aussehen:

9G1
9G8
9G10
9G15
9G100 usw.

und NICHT:

9G1
9G10
9G100
9G15
9G8

Die Spalte, in der die zu sortierenden Werte stehen, ist mit dem Format 'Standard' formatiert.

Nun habe ich eine zweite Spalte angelegt, in der ich mit folgender Formel

=WERT(TEIL(A7;3;LÄNGE(A7)-2))

1. die eigentliche Zahl aus dem Textstring extrahiere
2. dieses Ergebnis mit WERT in eine richtige Zahl verwandle

Das Ergebnis in dieser zweiten Spalte sieht so aus:

1
10
8
100
15 usw.

Diese zweite Spalte ist mit dem Format 'Zahl' formatiert.

Mein Problem besteht darin, daß ich nun trotzdem in der zweiten Spalte beim aufsteigenden Sortieren eine alphanumerische Sortierung bekomme und keine numerische, wie gewünscht.
Liegt das daran, daß dort eine Formel drin steht? Wo liegt der Fehler? Warum erkennt Excel die Zahlen nicht als Zahlen an?

Ich hoffe, ich habe mich klar genug ausgedrückt. Ich arbeite mit Excel X für Mac.
Allerbesten Dank im voraus für Eure Hilfe oder eine Idee zur Problemlösung. Sicher gibt es auch einen eleganten VBA-Code oder ein Makro, um gleich die erste Spalte richtig zu sortieren, aber das kann ich leider nicht.

Frank

  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Rudi Maintaire
Geschrieben am: 04.07.2007 15:48:45

Hallo,

=Teil(A1;3;255)*1

Gruß
Rudi

Eine Kuh macht Muh, viele Kühe machen Mühe


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Frank
Geschrieben am: 04.07.2007 15:58:30

Hallo und danke für die schnelle Reaktion! :-)

Die vorgeschlagene Formel geht leider auch nicht.
Liegt das vielleicht an der Art, wie ich sortiere? Habe gelesen, daß sich Excel immer die letzten Sortieroptionen merkt und dann automatisch wieder anwendet. Aber das Ergebnis ist immer das gleiche, egal ob ich einfach den Sortier-Button in der Leiste drücke oder über Daten - Sortieren gehe. Hmm ...


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Rudi Maintaire
Geschrieben am: 04.07.2007 16:07:01

Hallo,
keine Ahnung. Unter WIN geht's.
Vielleicht mit =TEXT(TEIL(A1;3;255);"0000")

Gruß
Rudi

Eine Kuh macht Muh, viele Kühe machen Mühe


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Peter Feustel
Geschrieben am: 04.07.2007 16:03:42

Hallo Frank,

das nachfolgende Makro sollte es tun:



Option Explicit

Sub Sortieren()

Dim WkSh     As Worksheet
Dim lZeile   As Long
Dim lLetzte  As Long
Dim sWert    As String

    Application.ScreenUpdating = False

    Set WkSh = Worksheets("Tabelle1")

    With WkSh
       lLetzte = IIf(.Range("A65536") <> "", 65536, .Range("A65536").End(xlUp).Row)
       Columns("A:A").Insert Shift:=xlToRight
       Columns("A:A").NumberFormat = "@"
       For lZeile = 1 To lLetzte
          sWert = Mid(Range("B" & lZeile).Value, 3, Len(Range("B" & lZeile).Value) - 2)
          Select Case Len(sWert)
             Case 1
                Range("A" & lZeile).Value = "000" & sWert
             Case 2
                Range("A" & lZeile).Value = "00" & sWert
             Case 3
                Range("A" & lZeile).Value = "0" & sWert
             Case 4
                Range("A" & lZeile).Value = sWert
          End Select
       Next lZeile
    End With

    Range("A1:Z" & lLetzte).Sort _
       Key1:=Range("A1"), Order1:=xlAscending, _
       Header:=xlGuess, _
       OrderCustom:=1, _
       MatchCase:=False, _
       Orientation:=xlTopToBottom

    Columns("A:A").Delete Shift:=xlToLeft

    Application.ScreenUpdating = True

End Sub 


     Code eingefügt mit Syntaxhighlighter 4.4


Gruß Peter


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Frank
Geschrieben am: 04.07.2007 16:16:21

Der Code ergibt einen Fehler:
Unzulässiger Prozeduraufruf oder ungültiges Argument in folgender Zeile:

sWert = Mid(Range("B" & lZeile).Value, 3, Len(Range("B" & lZeile).Value) - 2)

Was bedeutet das B? In Spalte B stehen nämlich andere Daten. Muß da was korrigiert werden.

Alles super, wir kriegen das bestimmt noch hin, bin guter Hoffnung :-)

Frank


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Peter Feustel
Geschrieben am: 04.07.2007 16:08:18

Hallo Frank,

meine erste Version war etwas 'unsauber', deshalb hier die bessere Variante:



Option Explicit

Sub Sortieren()

Dim WkSh     As Worksheet
Dim lZeile   As Long
Dim lLetzte  As Long
Dim sWert    As String

    Application.ScreenUpdating = False

    Set WkSh = Worksheets("Tabelle1") ' <== Tabellenblattnamen ggf. anpassen !!!

    With WkSh
       lLetzte = IIf(.Range("A65536") <> "", 65536, .Range("A65536").End(xlUp).Row)
       .Columns("A:A").Insert Shift:=xlToRight
       .Columns("A:A").NumberFormat = "@"
       For lZeile = 1 To lLetzte
          sWert = Mid(.Range("B" & lZeile).Value, 3, Len(.Range("B" & lZeile).Value) - 2)
          Select Case Len(sWert)
             Case 1
                .Range("A" & lZeile).Value = "000" & sWert
             Case 2
                .Range("A" & lZeile).Value = "00" & sWert
             Case 3
                .Range("A" & lZeile).Value = "0" & sWert
             Case 4
                .Range("A" & lZeile).Value = sWert
          End Select
       Next lZeile
       .Range("A1:Z" & lLetzte).Sort _
          Key1:=Range("A1"), Order1:=xlAscending, _
          Header:=xlGuess, _
          OrderCustom:=1, _
          MatchCase:=False, _
          Orientation:=xlTopToBottom
       .Columns("A:A").Delete Shift:=xlToLeft
    End With

    Application.ScreenUpdating = True

End Sub 


     Code eingefügt mit Syntaxhighlighter 4.4



Gruß Peter


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Frank
Geschrieben am: 04.07.2007 16:26:28

Der Code wirft leider einen Fehler aus - siehe meine vorige Antwort auf Deinen Vorschlag.

Danke!

Frank


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Peter Feustel
Geschrieben am: 04.07.2007 20:38:18

Hallo Frank,

da ich eine neue Spalte vor die Spalte A einfüge, verschiebt sich alles um eine Spalte und
deine zu sortierenden Werte stehen dann in Spalte B.

Aber ich schick dir gern mein Testmakro, das bei mir bestens funktioniert.

Gruß Peter

https://www.herber.de/bbs/user/43834.xls


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: Frank
Geschrieben am: 04.07.2007 18:03:53

keiner mehr eine Idee????


  

Betrifft: AW: Zahlenliste wird alphanumerisch sortiert von: HermannZ
Geschrieben am: 04.07.2007 18:51:08

Hallo Frank;

wenn du schon mit einer neuen Spalte arbeitest dann geht auch folgendes;

https://www.herber.de/bbs/user/43830.xls


Gruss HermannZ


 

Beiträge aus den Excel-Beispielen zum Thema "Zahlenliste wird alphanumerisch sortiert"