Excel-Sortierung unter Beibehaltung gleicher Werte in verschiedenen Spalten an derselben Position

Excel-Sortierung unter Beibehaltung gleicher Werte in verschiedenen Spalten an derselben Position

Stellen Sie sich vor, ich habe den folgenden Datensatz

A               B
AnthonyMorgan   EvelynThomas
JoePatterson    RussellRobinson
JohnAnderson    ChristopherMiller
CarolynMorris   RyanStewart
DorisKing       SarahPrice
AlanJohnson     MarilynHall
JonathanHall    EricCooper
AndreaPowell    GregorySimmons
PaulaCooper     JackRussell
AndrewPeterson  SeanEvans
JohnWilliams    JudyBell
LillianLewis    JohnWilliams
SteveRoberts    LillianLewis
MatthewGray     SteveRoberts
ChristinaClark  MatthewGray
                PeterAllen
                SharonHill
                MaryTurner
                DorisGonzales
                VictorWhite
                JoanFoster
                ChristinaClark
                RubyBryant
                RogerColeman
                JosephLong
                AndrewPeterson

Ich möchte sortieren, stelle ich mir nach Spalten vor, Asodass gleiche Werte in verschiedenen Spalten zusammengehalten werden. Das Endergebnis wäre:

A                   B
AlanJohnson 
AndreaPowell    
AndrewPeterson      AndrewPeterson
AnthonyMorgan   
CarolynMorris   
ChristinaClark      ChristinaClark
                    ChristopherMiller
                    DorisGonzales
DorisKing   
                    EricCooper
                    EvelynThomas
                    GregorySimmons
                    JackRussell
                    JoanFoster
JoePatterson    
JohnAnderson    
JohnWilliams        JohnWilliams
JonathanHall    
                    JosephLong
                    JudyBell
LillianLewis        LillianLewis
                    MarilynHall
                    MaryTurner
MatthewGray         MatthewGray
PaulaCooper 
                    PeterAllen
                    RogerColeman
                    RubyBryant
                    RussellRobinson
                    RyanStewart
                    SarahPrice
                    SeanEvans
                    SharonHill
SteveRoberts        SteveRoberts
                    VictorWhite

Irgendeine Idee?

Antwort1

Versuchen Sie dieses Makro:

Sub Interleaver()
    Dim nA As Long, nB As Long
    Dim rc As Long, i As Long, j As Long

    rc = Rows.Count
    nA = Cells(rc, "A").End(xlUp).Row
    nB = Cells(rc, "B").End(xlUp).Row
    Range("A1:A" & nA).Copy Range("C1")
    Range("B1:B" & nB).Copy Range("C" & nA + 1)

    For i = 1 To nA + nB
        If i <= nA Then
            Cells(i, "D") = "A"
        Else
            Cells(i, "D") = "B"
        End If
    Next i

    Range("C1:D" & nA + nB).Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal

    Range("A1:A" & nA).Clear
    Range("B1:B" & nB).Clear
    j = 2

    If Range("D1").Value = "A" Then
        Cells(1, "A") = Cells(1, "C")
    Else
        Cells(1, "B") = Cells(1, "C")
    End If

    For i = 2 To nA + nB
        If Cells(i, "C") = Cells(i - 1, "C") Then
            j = j - 1
            Range("A" & j & ":B" & j) = Cells(i, "C")
            j = j + 1
        Else
            If Cells(i, "D").Value = "A" Then
                Cells(j, "A") = Cells(i, "C")
            Else
                Cells(j, "B") = Cells(i, "C")
            End If
            j = j + 1
        End If
    Next i
End Sub

Es wird produziert:

Bildbeschreibung hier eingeben

Antwort2

Ich glaube nicht, dass es dafür einen einfachen Weg gibt. Versuchen Sie Folgendes:
- Fügen Sie Ihre Daten in einem Bereich zusammen und merken Sie sich dabei den ursprünglichen Speicherort (kopieren Sie z. B. Ihre erste Spalte in ein neues Blatt und füllen Sie die nächste Spalte mit „1“ aus, kopieren Sie die zweite Spalte unter der ersten und füllen Sie die zweite Spalte für diesen Datensatz mit „10“ aus).
- Fügen Sie eine Pivot-Tabelle ein, die Spaltenbeschriftungen sollten Ihre erste Spalte sein, und fragen Sie nach der Summe der zweiten Spalte (jetzt haben Sie Ihre eindeutigen Werte alphabetisch sortiert, in der zweiten Spalte 1 oder 10, wenn der Name nur in einer Spalte vorkommt, oder 11, wenn er in beiden vorkommt).
- Angenommen, Ihre Daten in der Pivot-Tabelle beginnen in A5, geben Sie dies in C5 ein: =if(mod(b5,2)=1,a5,"")und dies in d5:=if(b5>9,a5,"")

Antwort3

Ein anderer Workflow wäre wie folgt. Beachten Sie, dass er manuell ausgeführt wird, da mir keine Excel-Funktion bekannt ist, die das tut, wonach Sie suchen. Eine andere Möglichkeit wäre, Makro oder VBA zu verwenden, um den unten vorgeschlagenen Workflow zu automatisieren.

Bild 1 zeigt erste Beispieldaten:

Anfänglich

Beginnen Sie damit, jede Spalte separat zu sortieren. Achten Sie darauf, dass die Sortierung die anderen Spalten nicht beeinflusst. Fügen Sie dann eine weitere Spalte hinzu, um den Vorgang zu unterstützen, und schreiben Sie eine Index-Match-Funktion, um Übereinstimmungen für jeden Eintrag in Spalte A aus Spalte B zu finden:

=INDEX($C$1:$C$10,MATCH(A2,$C$1:$C$10,0),1)

Bild 2 zeigt die Ergebnisse dieser Phase:

Indizierung

Schneiden Sie nun die Spalte B aus und fügen Sie sie ein, damit sie nicht neben NA-Werten steht. Im Beispiel sind das zwei Zellen weiter unten. Schneiden Sie anschließend die Spalte A und die Hilfsspalte aus und fügen Sie sie ein, um Einträge mit der Spalte B abzugleichen. Siehe Abbildung unten:

Iterationen

Wiederholen Sie diese Phase, bis sie abgeschlossen ist. Denken Sie daran, mit Spalte B zu beginnen und dann Spalte A und die Indexspalte (Hilfsspalte) abzugleichen. Entfernen Sie abschließend die Indexspalte, und Sie sind fertig.

Fast fertig

ERLEDIGT!

Antwort4

Was Sie wirklich verlangen, ist ein vollständiger äußerer Join, der die beiden Spalten als separate Tabellen behandelt.

Soweit mir bekannt ist, ist dies im nativen Excel auch mit Hilfe des Power Query-Plugins nicht möglich.

Dudürfendie Ergebnisse erzielenWENNdie längere Tabelle umfasst alle Einträge der kürzeren Tabelle, aber Ihr Beispiel zeigt, dass dies nicht der Fall ist.

Was Sie tun können, ist, die beiden Spalten anzuhängen und dann zu deduplizieren. Das ist ganz einfach. Sie können auch eine Zählspalte hinzufügen, damit Sie sehen können, wie viele Kopien desselben Namens in den Originaldaten vorhanden waren. Lassen Sie mich wissen, ob Sie das tun möchten.

UPDATE: Wie ich erwartet habe, können Sie dies mit Microsoft Access tun. Dazu müssen Sie zunächst die beiden Spalten als separate Tabellen haben. Dann müssen Sie ZWEI Verknüpfungen zwischen den Tabellen erstellen, eine linke äußere Verknüpfung und eine rechte äußere Verknüpfung. Sobald Sie diese Beziehungen erstellt haben, können Sie eine einfache Abfrage ausführen, um die einzelne Spalte aus jeder Tabelle auszuwählen. Das ist alles.

Sie können Ihre Originaldaten bei Bedarf in Excel belassen und einfach eine Verknüpfung dazu herstellen, solange Sie die beiden Spalten in separate Tabellen aufteilen.

verwandte Informationen