Angenommen, ich habe eine Tabelle mit 4 Spalten: Id (col23), Gruppe (Spalte 5), Option (col24) & Wert (Spalte 12). Dies ist ein vereinfachtes Beispiel und die Spaltennummern sind die Zahlen in meiner tatsächlichen Tabelle. Was ich versuche zu tun ist, doppelte Zeilen zu entfernen, wenn es mehr als eine Zeile mit der gleichen ID in der ID-Spalte gibt. Dieses Bit arbeitet mit dem folgenden Code:Duplizieren in VBA
Sub data()
Dim LastRow As Long
Dim i As Long
LastRow = Cells(Rows.Count, "C").End(xlUp).Row
For i = LastRow To 2 Step -1
If Cells(i, 12).Value < Application.Evaluate("MAX(IF(" & Range(Cells(1, 23), Cells(LastRow, 23)).Address _
& "=" & Cells(i, 23).Address & "," & Range(Cells(1, 12), Cells(LastRow, 12)).Address & "))") Then
Rows(i).Delete
End If
Next i
End Sub
Allerdings bemerkte ich einige Aufzeichnungen, dass die ID gleich ist und auch der Wert ist gleich. Das bedeutet, dass ich ein paar Duplikate übrig habe. Um diese loszuwerden, möchte ich auch einen Test durchführen, um zu vergleichen, was in der Optionsspalte steht. Jede Zelle in dieser Spalte hat eine der folgenden Optionen: OptionA, OptionB, OptionC, geordnet nach Wichtigkeit. Der eine von größter Wichtigkeit sollte beibehalten werden und der andere sollte entfernt werden.
Ich versuche auch zu zählen und aufzuzeichnen, wie viele Duplikate aus jeder Gruppe entfernt wurden. Angenommen, es gibt 3 Gruppen: GroupA, GroupB & GroupC, ich möchte ein Array haben und jedes Mal, wenn ein Duplikat entfernt wird, sollte der Code überprüfen, welcher Gruppe er angehört und einen zu diesem Element des Arrays hinzufügen. Wissen Sie, wie ich meinen Code ändern kann, um dies zu erreichen?