Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
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
Inhaltsverzeichnis

Spalten nach - Durchsuchen und entsprechende Zeilen Löschen

Spalten nach - Durchsuchen und entsprechende Zeilen Löschen
25.10.2023 19:15:13
FlyingLord
Guten Tag Zusammen

Ich versuche mich langsam ein wenig mit VBA auseinanderzusetzen.
Aktuell stehe ich vor einem Problem, für welches ich noch keine Lösung gefunden habe.

Folgendes Szenario:

Ich habe ein Excel File mit zwei Tabellen. In der zweiten Tabelle wird in den Spalten A / C und D Text eingefügt, welcher aus einem anderen Excel File übernommen wird.
Jetzt gibt es ab und zu, dass in der der Spalte A und in der Spalte C statt einem Text nur ein "-" Zeichen steht. Nun würde ich gerne die entsprechenden Zeilen bei denen nur ein "-" vorhanden ist löschen.

Aktuell versuche ich dies folgendermassen

Dim cell As Range


For Each cell In Range("A2:C300")
If cell.Value = "-" Then
cell.EntireRow.Delete
End If
Next cell


Dies funktioniert leider nicht so richtig. Es werden nicht alle Zeilen gelöscht bei welchen in Spalte A oder C ein "-" steht.

Anschliessend sollte dann die Spalte A ohne Duplikate in Tabelle 1 eingefügt werden.

Vielleicht kann mir da jemand weiter helfen.

Besten Dank im Voraus.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten nach - Durchsuchen und entsprechende Zeilen Löschen
25.10.2023 19:23:28
bigmayo
Moin,

Dein Code hat fast das gewünschte Verhalten, aber es gibt ein Problem, wenn du Zeilen aus der Tabelle löschst, während du diese durchläufst. Dadurch werden einige Zeilen übersprungen und nicht alle Zeilen gelöscht, bei denen in Spalte A oder C ein "-" steht.

Um dieses Problem zu umgehen, solltest du die Schleife rückwärts durchlaufen, indem du die "Step -1" Eigenschaft verwendest. Hier ist der geänderte Code:

Dim LastRow As Long

LastRow = Range("A" & Rows.Count).End(xlUp).Row

For i = LastRow To 2 Step -1
If Cells(i, 1).Value = "-" Or Cells(i, 3).Value = "-" Then
Rows(i).Delete
End If
Next i


Dieser Code wird die Schleife rückwärts durchlaufen und die Zeilen löschen, bei denen in Spalte A oder C ein "-" steht. Nachdem du die unerwünschten Zeilen gelöscht hast, kannst du die Duplikate in Spalte A von Tabelle 1 entfernen. Du kannst dies mit der folgenden Zeile tun:

Worksheets("Tabelle1").Range("A2:A" & LastRow).RemoveDuplicates Columns:=1, Header:=xlNo



Stelle sicher, dass du den Tabellennamen ("Tabelle1") an deinen Tabellennamen anpasst.

Damit solltest du die gewünschte Funktionalität erreichen.

Gruß
Anzeige
AW: Spalten nach - Durchsuchen und entsprechende Zeilen Löschen
25.10.2023 19:58:06
Piet
Hallo

schau mal bitte im code des Kollegen, da ist in der oberen Dim Zeile i nicht als i As Long deklariert.
Schau mal ob der Code läuft wenn du das noch hinter LastRow mit Komma einfügst.

mfg Piet
AW: Spalten nach - Durchsuchen und entsprechende Zeilen Löschen
25.10.2023 19:44:34
FlyingLord
Danke schon mal für die super rasche Antwort.

Habe dies einmal eingefügt, bekomme aber die Meldung, Fehler beim Kompilieren, Variable nicht definiert und das i wird Blau markiert. Was mache ich falsch.
Sorry, bin noch absoluter Anfänger. Das mit dem Duplikate entfernen und Übertragen hatte ich bereits. Eigentlich haperts nur noch an der "-" Zeilen Löschfunktion.

Gruss
Anzeige
AW: Spalten nach - Durchsuchen und entsprechende Zeilen Löschen
25.10.2023 19:56:36
bigmayo
Moin,

teste bitte nochmal mit diesem Code:

Sub LöscheZeilenMitMinus()

Dim ws As Worksheet
Dim LastRow As Long
Dim i As Long

' Arbeitsblatt festlegen (hier "Tabelle2" anpassen)
Set ws = ThisWorkbook.Sheets("Tabelle2")

' Letzte Zeile in Spalte A finden
LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

' Durchlaufe die Zeilen rückwärts, um während des Löschens Probleme zu vermeiden
For i = LastRow To 2 Step -1
If ws.Cells(i, 1).Value = "-" Or ws.Cells(i, 3).Value = "-" Then
ws.Rows(i).Delete
End If
Next i
End Sub


Bitte stell` sicher, dass du den Blattnamen "Tabelle2" in ThisWorkbook.Sheets("Tabelle2") auf den Namen deines zweiten Blatts ändern. Der Code wird alle Zeilen löschen, in denen in Spalte A oder Spalte C ein "-" Zeichen steht.

Wenn du anschließend die Spalte A ohne Duplikate in Tabelle 1 einfügen möchtest, kannst du den Code verwenden, den du bereits hast, um Duplikate zu entfernen und Daten von Tabelle 2 nach Tabelle 1 zu kopieren.

Gruß
Anzeige
AW: Spalten nach - Durchsuchen und entsprechende Zeilen Löschen
25.10.2023 20:10:40
FlyingLord
Vielen Vielen Dank.

Das sieht aus, als würde das funktionieren. Top. Schon lange nicht mehr so rasch auf etwas eine Lösung bekommen.
Besten Dank.

Gruss
AW: Spalten nach - Durchsuchen und entsprechende Zeilen Löschen
25.10.2023 20:14:26
bigmayo
Moin,

das freut mich. Immer gerne!

Gruß

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige