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.3
würde zurückkehren 1,002,003
, während
1.51.5.5
gibt 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!
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).