Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Werte suchen und Zeilen löschen

Forumthread: Werte suchen und Zeilen löschen

Werte suchen und Zeilen löschen
15.04.2021 17:35:28
Detlef
Hallo,
ich habe in diesem Beitrag ein Script gefunden, dass fast das macht, was ich benötige.
https://www.herber.de/forum/archiv/1184to1188/1185100_Zelle_suchen_Zeile_loeschen.html
Set RaFound = .Cells.Find("123456", , , xlWhole, , xlNext)
Jedoch muss an der Stelle wo 123456 steht, mehrere Werte aus Zellen eingelesen werden.
Beispiel:
In Tabelle A habe ich 10000 Zeilen mit verschiedene Werten in der A-Spalte
In Tabelle B habe ich 100 Zeilen mit Werten, die, wenn in Tabelle A vorhanden, dort incl. Zeile gelöscht werden sollen
Kann man das Script um diese Funktionalität erweitern?
Viele Grüße, Detlef
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte suchen und Zeilen löschen
15.04.2021 18:09:20
Rudi
Hallo,
wozu VBA?
Hilfsspalte in TabA: =Zählenwenn(TabelleB!B:B;A2), nach 0 filtern und die Zeilen löschen. Dauert 10 Sekunden.
Gruß
Rudi
AW: Werte suchen und Zeilen löschen
15.04.2021 18:22:26
Nepumuk
Hallo Detlef,
da du nicht angibst wo sich die Suchbegriffe genau befinden (welche Spalte ab Zeile) bin ich mal von Spalte A ab Zeile 1 ausgegangen.
Option Explicit
Public Sub DeleteRows()
Dim avntValues As Variant, vntItem As Variant
Dim objCell As Range
With Worksheets("Tabelle B")
avntValues = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
End With
With Worksheets("Tabelle A").Columns(1)
For Each vntItem In avntValues
Set objCell = .Find(What:=vntItem, _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
If Not objCell Is Nothing Then
Do
objCell.EntireRow.Delete
Set objCell = .FindNext
Loop Until objCell Is Nothing
End If
Next
End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Werte suchen und Zeilen löschen
15.04.2021 18:35:17
Daniel
Hi
das geht am besten auf einem ganz anderen Weg:

With Sheets("TabelleA").Usedrange
with .Columns(.Columns.Count + 1)
.FormulaR1C1 "=IF(CountIF('TabelleB'!C1,RC1),0,Row())"
.Cells(1, 1).value = 0
.EntireRow.RemoveDuplicates .column, xlno
.ClearContents
End with

der Weg ist folgender:
1. man kennzeichnet in einer Hilfsspalte per Formel alle Zeilen, die gelöschte werden sollen mit 0 und die die stehenbleiben müssen mit der Zeilennummer
2. in die überschriftenzeile der Hilfsspalte muss ebenfalls die 0
3. dann kann man alle Zeilen mit 0 unterhalb der Überschrift über die Menüfunktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN löschen, welches sehr schnell auch mit größten Datenmengen funktioniert.
4. hilfsspalte wieder löschen.
Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige