AW: Duplikate entfernen
26.01.2018 10:00:17
fcs
Hallo Christian,
hier ein entsprechendes Makro.
Alternativ könnte man auch die Inhalte der Duplikate in Spalte C in Spalte C der 1. Zeile inkl. Zeilenschaltung hinzufügen.
Gruß
Franz
Sub Daten_umgruppieren()
Dim wksQ As Worksheet
Dim Zeile As Long, Zeile_L As Long, Zeile_1 As Long, Zeile_2 As Long
Dim arrData
Dim varA, varB, Spalte As Long
Dim arrDone() As Boolean
Set wksQ = ActiveSheet
'Kopie vom Originalblatt erstellen
wksQ.Copy after:=wksQ 'Diese Zeile weglassen, wenn im gleichen Blatt umgruppiert werden soll
Set wksQ = ActiveSheet
With wksQ
Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
arrData = .Range(.Cells(1, 1), .Cells(Zeile_L, 2))
ReDim arrDone(LBound(arrData) To UBound(arrData))
Application.ScreenUpdating = False
For Zeile = 1 To Zeile_L
Zeile_1 = Zeile 'Zeile merken, in die Werte von Duplikaten kopiert werden sollen
If arrDone(Zeile) = False Then
'Vergleichswerte merken
varA = arrData(Zeile, 1)
varB = arrData(Zeile, 2)
'Spaltenzähler zurücksetzen
Spalte = 3
arrDone(Zeile) = True 'Zeile als erledigt markieren
For Zeile_2 = Zeile_1 + 1 To Zeile_L
'prüfen ob Zeile schon erledigt
If arrDone(Zeile_2) = False Then
'Werte in Zeile mit gemerkten Werten vergleichen
If arrData(Zeile_2, 1) = varA And arrData(Zeile_2, 2) = varB Then
Spalte = Spalte + 1
'Zelle in Spalte 3 in gemerkte 1. Zeile kopieren
.Cells(Zeile_2, 3).Copy .Cells(Zeile_1, Spalte)
.Rows(Zeile_2).ClearContents 'Inhalte in Duplikat-Zeile löschen
arrDone(Zeile_2) = True 'Zeile als erledigt markieren
End If
End If
Next
End If
Next
'entstandene Leerzeilen löschen
With .Range(.Cells(1, 1), .Cells(Zeile_L, 1))
If Application.WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End With
Application.ScreenUpdating = True
Erase arrData, arrDone
End With
End Sub