Ich muss Transaktionsinformationen in einer Tabelle nach aufsteigendem Datum sortieren. Jede Zeile steht für eine einzelne Person und die letzten 6 Transaktionen in ihrem Verlauf. Das Problem ist, dass die Datenbank zwar die letzten 6 Transaktionen ausspuckt, dies jedoch nicht in der richtigen Reihenfolge tut, sodass ich dies manuell in Excel tun muss.
Das Transaktionsdatum und das Ablaufdatum müssen mit den Daten „Ist Geschenk“ und „Aktion“ verknüpft bleiben. Daher funktioniert die Verwendung von Zeilensortierfunktionen für diese Anwendung nicht. Diese vier Spalten müssen als Gruppe zusammengehalten werden.
Im beigefügten Screenshot habe ich Farben verwendet, um zu zeigen, wie Spalten gruppiert bleiben müssen, und die Transaktion rot hervorgehoben, die zuerst hätte kommen MÜSSEN, wenn die Daten in der richtigen Reihenfolge wären. Hoffentlich gibt dies einen klareren Hinweis auf das Problem („Erste“ sind für jede Person in unterschiedlichen Spalten) und was mein Ziel ist (dass jede Spaltengruppe in aufsteigender Datumsreihenfolge nach Zeilen sortiert wird).
Antwort1
Probieren Sie diesen Code aus. Fügen Sie ihn in das VB-Editor-Fenster ein und führen Sie ihn aus (googlen Sie „Wie führe ich VBA-Code aus?“, um weitere Hilfe zu erhalten). Das ist zwar nicht besonders effizient, sollte aber funktionieren.
Sub Some_Sorting_Procedure()
Dim r As Long, last_row As Long
Dim i As Long, j As Long
Dim arr As Variant
Application.ScreenUpdating = False
With ActiveSheet
last_row = .Cells(.Rows.Count, 1).End(xlUp).Row
For r = 2 To last_row
For i = 3 To 23 Step 4
For j = i + 4 To 23 Step 4
If .Cells(r, i).Value > .Cells(r, j).Value Then
arr = .Cells(r, j).Resize(, 4).Value
.Cells(r, i).Resize(, 4).Cut .Cells(r, j)
.Cells(r, i).Resize(, 4).Value = arr
End If
Next j
Next i
Next r
End With
End Sub
Bearbeiten
Dies setzt voraus, dass Ihre Daten bei Zelle beginnen A1
und die erste Spalte keine leeren Zellen enthält. Der fest codierte Wert 23
ist darauf zurückzuführen, dass Sie angegeben haben, dass es nur sechs Transaktionen geben würde. Sie müssen diese Zahl für jede zusätzliche Transaktion um 4 erhöhen.