Wie sortiert man Zahlen im Listenstil in Excel?

Wie sortiert man Zahlen im Listenstil in Excel?

Ich habe in Excel eine Spalte mit „Zahlen“, die ich wie folgt sortieren möchte:

1.1
1.2
1.2.1
1.2.6
1.2.9
1.2.10
1.2.11
1.3

Unabhängig davon, ob es sich bei der Zelle um einen Zahlen- oder Texttyp handelt, sortiert Excel sie wie folgt:

1.1
1.2
1.2.1
1.2.10
1.2.11
1.2.6
1.2.9
1.3

Dies könnte auch als "Natürliche Sortierung" bezeichnet werden - in einer Programmiersprache wie PHP würde dies erreicht durchnatsort Funktion. Aber ich kann scheinbar keine Möglichkeit finden, in Excel auf diese Weise zu sortieren.

Um etwas Kontext zu vermitteln: Diese Zahlen stellen Abschnitte und Unterabschnitte dar – keine Dezimalzahlen, sondern Listenelemente:

1. Section
    1. Sub-section
    2. Sub-section
        1.  Item
        6.  Item
        9.  Item
        10. Item
        11. Item
    3. Sub-section

Antwort1

Sie können eine Tabelle erstellen, um die Werte aufzuteilen:

Verwenden Sie für jede Spalte die Überschriften (Zeile 1) und Formeln (Zeile 2+):

A1: text    A2: (your section numbers)
B1: dot1    B2: =FIND(".",A2,1)  
C1: dot2    C2: =IFERROR(FIND(".",A2,B2+1),LEN(A2)+1)  
D1: num1    D2: =VALUE(MID(A2,1,B2-1))  
E1: num2    E2: =IFERROR(VALUE(MID(A2,B2+1,C2-B2-1)),0)  
F1: num3    F2: =IFERROR(VALUE(MID(A2,C2+1,LEN(A2)-C2)),0)  

Dies wird wie folgt angezeigt:

      A      B      C      D      E      F

1   text   dot1   dot2   num1   num2   num3
2   1.1       2      4      1      1      0
3   1.1.3     2      4      1      1      3
4   2.10.7    2      5      2     10      7

Dann können Sie eine benutzerdefinierte Sortierung nach den Spalten num1, num2 und num3 durchführen.

Antwort2

Ich habe gute Ergebnisse erzielt, indem ich eine benutzerdefinierte Funktion eingefügt habe. Die benutzerdefinierte Funktion gibt einen Wert zurück, der die Summe der Abschnittsnummer in Millionen, der Unterabschnittsnummer in Tausend, der Artikelnummer in Einheiten, des Unterartikels (falls vorhanden) in Tausendsteln, der Unter-Unterartikel in Millionsteln usw. darstellt. Beispiel:

1.2.3würde zurückkehren 1,002,003, während

1.51.5.5gibt 1,051,005.005- und diese Nummern können dann zum Sortieren verwendet werden.

Ich finde, dass dies weniger umständlich ist, als die Verwendung von Zeichenfolgenfunktionen im Arbeitsblatt oder das Sortieren nach mehreren Spalten.

Die UDF lautet wie folgt:

Function LList(stInVal As String) As Double

Dim iPower          As Integer
Dim vSplit          As Variant
Dim i               As Long

iPower = 6

vSplit = Split(stInVal, ".", -1)

For i = 0 To UBound(vSplit)
    LList = LList + CInt(vSplit(i)) * 10 ^ (iPower - 3 * i)
Next i

End Function

Antwort3

Doug erklärt das ausführlich. Ich hoffe, es macht Sinn!

http://youtu.be/74WdfqAB8mY

Antwort4

Hatte gerade das gleiche Problem ...

Wenn Sie eine schnelle Lösung wünschen (und sich nicht um die Verwendung des „.“ kümmern), suchen Sie einfach alle „.“ und ersetzen Sie sie durch „_“ – dadurch kann Excel hierarchisch sortieren.

die Sortierung wird fast funktionieren. Jetzt müssen Sie Ihren Daten nur noch einen abschließenden „Unterstrich“ hinzufügen, sodass Daten mit einem Zeichen „1“ zu „1_“ werden (entsprechend der Anzahl der Zeichen in Ihren Daten).

verwandte Informationen