Sub MurderMo_Sort()
With Application
.EnableEvents = False 'Events abschalten
.ScreenUpdating = False 'Bildschirmaktualisierung abschalten
.Calculation = xlCalculationManual 'Berechnungsmodus auf Manuell
End With
'wenn Fehler gehe zum Ende
On Error GoTo ErrEnde
'Variablendeklaration
Dim shQuel As Worksheet, shZiel As Worksheet
Dim lngQLR As Long, lngZLR As Long, lngQR As Long
Dim lngCount As Long
'Tabellen benennen
With ThisWorkbook
Set shQuel = Sheets("Tabelle1")
Set shZiel = Sheets("Tabelle2")
End With
'letzte Reihe in Quelle
lngQLR = shQuel.Cells(Rows.Count, 1).End(xlUp).Row
'Quellreihen durlaufen
'Wenn Nummer in Quelltabelle mehrfach vorhanden
'Reihen rückwärts durchlaufen bei Gleichheit kopieren&löschen
For lngQR = 1 To lngQLR
If shQuel.Cells(lngQR, 1).Value = "" Then Exit For
If WorksheetFunction.CountIf(shQuel.Range("A:A"), shQuel.Cells(lngQR, 1).Value) > 1 Then
lngQLR = shQuel.Cells(Rows.Count, 1).End(xlUp).Row
For lngCount = lngQLR To lngQR + 1 Step -1
If shQuel.Cells(lngCount, 1).Value = shQuel.Cells(lngQR, 1).Value Then
lngZLR = shZiel.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Range(shQuel.Cells(lngCount, 1), shQuel.Cells(lngCount, 3)).Copy
shZiel.Cells(lngZLR, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(shQuel.Cells(lngCount, 1), shQuel.Cells(lngCount, 3)).EntireRow.Delete
End If
Next
End If
Next
ErrEnde:
'Zwischenablage löschen
Application.CutCopyMode = False
'Verweise aufheben
Set shQuel = Nothing
Set shZiel = Nothing
With Application
.EnableEvents = True 'Events einschalten
.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
.Calculation = xlCalculationAutomatic 'Berechnungsmodus auf auto
.Calculate 'Mappen neu rechnen
End With
End Sub
SpalteA
1
2
3
4
1
2
3
5
SpalteA
1
2
3
4
5
SpalteA
1
2
3
SpalteA
4
5
SpalteA
1
1
2
2
3
3Sub MurderMo_Sort2()
With Application
.EnableEvents = False 'Events abschalten
.ScreenUpdating = False 'Bildschirmaktualisierung abschalten
.Calculation = xlCalculationManual 'Berechnungsmodus auf Manuell
End With
'wenn Fehler gehe zum Ende
On Error GoTo ErrEnde
'Variablendeklaration
Dim shQuel As Worksheet, shZiel As Worksheet
Dim lngQLR As Long, lngZLR As Long, lngQR As Long
Dim lngCount1 As Long, lngKillCount As Long, lngCount2 As Long
Dim varScratch As Variant
'Tabellen benennen
With ThisWorkbook
Set shQuel = Sheets("Tabelle1")
Set shZiel = Sheets("Tabelle2")
End With
'letzte Reihe in Quelle
lngQLR = shQuel.Cells(Rows.Count, 1).End(xlUp).Row
'Quellreihen durlaufen
'Wenn Wert in Quelltabelle mehrfach vorhanden
'Treffer zählen
'Treffer suchen kopieren & Inhalt löschen
For lngCount1 = 1 To lngQLR Step 1
varScratch = shQuel.Cells(lngCount1, 1).Value
If WorksheetFunction.CountIf(shQuel.Range("A:A"), varScratch) > 1 Then
lngKillCount = WorksheetFunction.CountIf(shQuel.Range("A:A"), varScratch)
For lngCount2 = 1 To lngKillCount Step 1
If IsNumeric(varScratch) Then
lngQR = WorksheetFunction.Match(CDbl(varScratch), shQuel.Range("A:A"), 0)
Else
lngQR = WorksheetFunction.Match(varScratch, shQuel.Range("A:A"), 0)
End If
lngZLR = shZiel.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Range(shQuel.Cells(lngQR, 1), shQuel.Cells(lngQR, 3)).Copy
shZiel.Cells(lngZLR, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Range(shQuel.Cells(lngQR, 1), shQuel.Cells(lngQR, 3)).Clear
Next
End If
Next
'Leerzellen im ursprünglichen Quellbereich löschen
Range(shQuel.Rows(1), shQuel.Rows(lngQLR)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
ErrEnde:
'Zwischenablage löschen
Application.CutCopyMode = False
'Verweise aufheben
Set shQuel = Nothing
Set shZiel = Nothing
With Application
.EnableEvents = True 'Events einschalten
.ScreenUpdating = True 'Bildschirmaktualisierung einschalten
.Calculation = xlCalculationAutomatic 'Berechnungsmodus auf auto
.Calculate 'Mappen neu rechnen
End With
End SubOption Explicit
Sub FilterKopieren()
ActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
ActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Copy Worksheets(1).Range("C1")
ActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace
End Sub
Doppelte Einträge löschen
Handybike 29.04.2008 - 496 Hits - 1 Antwort
In Excel doppelte Einträge löschen - wie?
kasipoasi 25.05.2008 - 987 Hits - 2 Antworten
Doppelte Eintäge finden und an einer anderen Stelle kopieren
Rudi81 12.06.2008 - 93 Hits - 2 Antworten
Doppelte Einträge in Liste eliminieren
wundi23 03.04.2009 - 1617 Hits - 3 Antworten