807 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Forenmitglieder,

ich habe bereits einen DuplikatenLösch Code der die Duplikate nach einem Index vergleicht. Wenn es beispielhaft einen Artikel mehrmals findet vergleicht er diese Artikel nach einem weiteren Wert. Der Artikel mit dem höheren Index bleibt unberührt, der andere wird gelöscht.
Dieser Code lautet folgendermaßen:

Private Sub DuplikateLöschenIndexVergleich()

Worksheets("Parameter Seite").Select
Dim tx As String
Dim i As Long, j As Long, k As Long, laR As Long
Application.ScreenUpdating = False
laR = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To laR
If Cells(i, 3) <> 0 Then 'prüft das Zelle nicht leer ist
If Cells(i, 3).Interior.ColorIndex <> 45 Then 'prüft ob Zelle schon gefärbt
tx = Cells(i, 1).Value
For j = i + 1 To laR
If Cells(j, 1).Value = tx Then 'vergleicht ob gleiche Werte der Zellen, wenn == dann
If Cells(i, 3).Value < Cells(j, 3).Value Then 'Prüft welche Zelle größeren Wert hat
Cells(i, 3).Interior.ColorIndex = 45 'Färbt Zelle
Else
Cells(j, 3).Interior.ColorIndex = 45 'Färbt andere Zelle
End If
End If
Next j
End If
End If
Next i
For k = laR To 1 Step -1
If Cells(k, 3).Interior.ColorIndex = 45 Then 'löscht gefärbte Zellen
Cells(k, 3).EntireRow.Delete
End If
Next k
Application.ScreenUpdating = True

End Sub



Nun möchte ich aber das Duplikate nach 2 Indizes verglichen werden. Beispielhaft
Artikel: A ..... Index in Spalte 3: 3..... Index in Spalte5: 5
Artikel: A..... Index in Spalte 3: 5..... Index in Spalte5: 3

übrig bleiben soll:

Artikel: A..... Index in Spalte 3: 5..... Index in Spalte5: 5


Ich tippe mal am besten wäre es eine ganz neue Zeile aufzumachen und die Werte dann zu übertragen. Aber schon bei dem Schritt eine neue Zeile einzufügen hapert es bei mir.

Könnt ihr mir helfen?

Gruß Marco

1 Antwort

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi marco :-)

per vba
sortiere die daten erst
kopieren, werte einfuegenin in neue tabelle
vergleich der kopierten werte mit den originaldaten ,nutze den groesser operator
durch die vorige sortierung und neuerstellte tabelle,reicht nun ein schleifendurchlauf

alternativ zur beschleunigung des vorganges,ein array statt zellzugriffe

gruss nighty
...