Sortieren Sie Spalte B, während die Reihenfolge von Spalte A beibehalten wird

Sortieren Sie Spalte B, während die Reihenfolge von Spalte A beibehalten wird

In Excel habe ich zwei Spalten. Ich möchte die zweite in alphabetischer Reihenfolge sortieren und gleichzeitig die (benutzerdefinierte) Reihenfolge der ersten beibehalten (denken Sie an std::stable_sort, wo die Gleichheit nur auf der ersten Spalte basiert). Beispiel:

dsf   k
www   d
www   a
azd   q
azd   e
azd   b

soll werden

dsf   k
www   a
www   d
azd   b
azd   e
azd   q

Der Sortierassistent scheint keine Option zum „Behalten der aktuellen Reihenfolge“ zu haben. Ich könnte die benutzerdefinierte Reihenfolge definieren, aber ich habe mehr als tausend verschiedene Elemente. Das wäre wirklich mühsam und diese benutzerdefinierte Reihenfolge kann sich jederzeit ändern.

Antwort1

Ich gehe davon aus, dass Ihre Daten in Zeile 2 beginnen und diese Spalte Cals „Hilfsspalte“ zur Verfügung steht. Setzen Sie

=IF(A1=A2, C1, C1+1)

in Zelle C2. (Wenn Spalte Cnicht verfügbar ist, verwenden Sie eine verfügbare. Wenn Ihre Daten in Zeile 1 beginnen, fügen Sie entweder eine leere Zeile ein oder setzen Sie (trotzdem) das Obige in Zelle C2, aber 1in Zelle C1.) Ziehen/füllen Sie nach unten. Dies (Spalte C) „dokumentiert“ jetzt Ihre benutzerdefinierte Reihenfolge; z. B. C2= 1, C3= C4= 2 und C5= C6= C7= 3. Sortieren Sie jetzt nach Spalte Cund Spalte B.

Antwort2

Schnell und dreckig:-

  1. Kopieren Sie den Inhalt der Spalte A in den Notizblock und kopieren Sie ihn anschließend erneut in die Zwischenablage.
  2. Wählen Sie beide Spalten aus.
  3. Wählen Sie die Sortierfunktion aus und sortieren Sie Spalte A in der Reihenfolge „Benutzerdefinierte Liste“.
  4. Tragen Sie die Daten aus der Zwischenablage in die benutzerdefinierte Liste ein.
  5. Fügen Sie der Sortierfunktion eine Ebene hinzu und sortieren Sie dann nach Spalte B, „von klein nach groß“.

Antwort3

Ich denke, am besten verwenden Sie benutzerdefinierte Reihenfolgen. Wenn es nicht zu oft aktualisiert werden muss, können Sie es durchgehen FILE>OPTIONS>ADVANCED>EDIT CUSTOM LISTS...und einfach den gesamten Bereich importieren. Verwenden Sie das dann beim Sortieren.

Eine VBA-Lösung wäre etwa:

Untersortierung()
Dim iCustListNum As Integer

iCustListNum = Anwendung.CustomListCount + 1
Anwendung.AddCustomList ListArray:=Range("A2:A100")

Bei Fehler GoTo err:

'Sortieren Sie Ihre Liste
Bereich("A1:B100").sort Key1:=Bereich("A1"), Order1:=xlAscending, OrderCustom:=iCustListNum, _
    Schlüssel2:=Bereich("B1"), Reihenfolge2:=xlAufsteigend, Überschrift:=xlJa, _
    MatchCase:=Falsch, Orientierung:=xlTopToBottom

'Aufräumen
irren:
Application.DeleteCustomList ListNum:=iCustListNum

End Sub

verwandte Informationen