Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
460to464
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
460to464
460to464
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Identische Zeilen löschen und protokollieren

Identische Zeilen löschen und protokollieren
28.07.2004 11:26:55
Kechler
Guten morgen Forum,
ich hab folgende Frage an euch:
Ich habe ein Makro, welches die Spalte I der tabelle2 mit der Spalte I der tabelle1 überprüft und doppelte Einträge automatisch aus tabelle1 löscht.
Code:
StandardModule: Modul1

Sub Loeschen()
Dim var As Variant
Dim iRow As Integer
iRow = 1
With Worksheets("tabelle2")
Do Until IsEmpty(.Cells(iRow, 9))
var = Application.Match(.Cells(iRow, 9).Value, Columns(9), 0)
If Not IsError(var) Then Rows(var).Delete
iRow = iRow + 1
Loop
End With
End Sub

Könnte mir jemand sagen, wie ich hier etwas einbauen kann, damit mir zur Protokollierung die gelöschten Zeilen in einer dritten Tabelle angezeigt werden?
Oder gibt es noch eine bessere Variante für mein Problen? Beispielweise, dass man beide Tabellen überprüfen lässt und in tabelle1 die doppelten Daten farbig markieren lässt, so dass man diese dann per Hand löschen kann?
Danke
Gruß
Christoph

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Identische Zeilen löschen und protokollieren
ChirsL
Hi Christoph
Dein Code sieht eigentlich gut aus und die Idee mit Match und IsError gefällt mir. Der Code funktioniert aber nicht, wenn in Tabelle 1 der gleiche Wert mehrmals vorkommen kann. Darum würde ich den Code umstellen und Tabelle 1 durchlaufen.
Zeilen löschen würde ich grundsätzlich von unten nach oben, weil sagen wir Zeile 10 wird entfernt, dann wird Zeile 11 zur neuen Zeile 10, der Counter ist aber bereits bei Zeile 11. Somit kann ein Wert übersprungen werden, was dir von unten nach oben (Step -1) nicht passiert.
Gruss
Chris

Sub Loeschen()
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Dim iRow As Long
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Set WS3 = Worksheets("Tabelle3")
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For iRow = Range("I65536").End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountIf(WS2.Columns(9), WS2.Cells(iRow, 9)) > 0 Then
WS1.Rows(iRow).Copy
WS3.Rows(1).Insert
WS1.Rows(iRow).Delete
End If
Next iRow
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
AW: Identische Zeilen löschen und protokollieren
ChrisL
Mini-Korrektur, aber musste sein ;-)

Sub Loeschen()
Dim WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Dim iRow As Long
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Set WS3 = Worksheets("Tabelle3")
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For iRow = WS1.Range("I65536").End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountIf(WS2.Columns(9), WS2.Cells(iRow, 9)) > 0 Then
WS1.Rows(iRow).Copy
WS3.Rows(1).Insert
WS1.Rows(iRow).Delete
End If
Next iRow
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
AW: Identische Zeilen löschen und protokollieren
28.07.2004 20:35:31
Kechler
Hi Chris,
vielen vielen Dank für den Code und für den Tipp, das Ding von unten her durchsuchen zu lassen. Echt super!!!
Gruß
Christoph (fast Namensvetter ;-) )
Danke für die Rückmeldung
ChristophL
eigentlich sind wir Namensvetter, aber Chris tönt halt cooler :-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige