Anzeige
Archiv - Navigation
1700to1704
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

Zeilen löschen - wenn wert aus Liste

Zeilen löschen - wenn wert aus Liste
15.07.2019 12:02:31
Max
Hallo liebe Excel pro's,
ich habe ein Problem mit folgendem Makro:
Public Sub bedingte_Zeilenloeschung()
'** Ermittlung der letzten Zeile in Spalte A
lz = Cells(Rows.Count, 1).End(xlUp).Rows.Row
'** Durchlauf aller Zeilen
For t = lz To 2 Step -1 'Zählung rückwärts bis Zeile 2
'Abfragen, ob in der ersten Spalte der Buchstabe "x" steht
If Cells(t, 1).Value = "1" Then
Rows(t).Delete Shift:=xlUp
End If
Next t
End Sub

Diese Makro löscht also alle Zeilen in meiner Datei mit der Artikel Nr. 1
Allerdings möchte ich hier keine harten Werte (der Artikelnummer) sondern möchte mit dem Makro alle Artikel einer anderen Liste löschen.
Dh. ich habe eine Liste mit Artikelnummern die gelöscht werden sollen. Mit Hilfe des Makros sollen dann all diese Artikel aus der Artikelübersicht gelöscht werden
Wie kann ich das Makro so erweitern ?
Anbei die Beispieldatei mit Artikelübersicht und Löschliste
https://www.herber.de/bbs/user/130913.xlsm
Könnt ihr mir hier weiterhelfen ?
Vielen Dank !!
Viele Grüße
Max

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen - wenn wert aus Liste
15.07.2019 12:13:48
Torsten
Hallo Max,
so z.B.:

Public Sub bedingte_Zeilenloeschung()
Dim WS1 As Worksheet: Set WS1 = Worksheets("Löschliste")
Dim WS2 As Worksheet: Set WS2 = Worksheets("Übersicht")
Dim lngRow As Long
For lngRow = 2 To WS2.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIfs(WS1.Columns(1), WS2.Cells(lngRow, 1)) = 1 Then
WS2.Cells(lngRow, 1).EntireRow.Delete
End If
Next lngRow
End Sub
Gruss Torsten
AW: Zeilen löschen - wenn wert aus Liste
15.07.2019 12:28:22
Max
Hallo Torsten,
vielen vielen Dank!
LG
max
gerne...
15.07.2019 12:39:21
Torsten
AW: Zeilen löschen - wenn wert aus Liste
15.07.2019 12:33:18
Günther
Moin,
das sollte sich mit Power Query gut lösen lassen ((Linker Anti-Join); ich kann es aber nicht prüfen, da ich keine VBA-verdächtigen Files aus fremden Quellen lade.
Gruß
Günther
Anzeige
Tipp für Günther
15.07.2019 13:10:31
Daniel
Hi Günther
wenn du Angst vor VBA-Verseuchten Files hast, kannst du diese auch so öffnen:
1. speichere die Download-Datei
2. öffne Excel neutral, bzw mir irgendeiner Datei der du vertraust.
3. gehe in den Menüpunkt "Entwicklertools" und aktiviere den Entwurfsmodus. im Entwurfsmodus werden die automatischen Markos (wie sie beim Starten der Datei ablaufen können) deaktiviert, dh du öffnest die Datei, ohne das VBA automatisch aktiv werden kann.
4. Öffne jetzt die Datei über das Menü "Datei - Öffnen"
5. speichere die Datei als xlsx-Datei. die eventuell vorhandenen Makros werden dabei gelöscht.
6. jetzt kannst du die neue Datei gefahrlos öffnen und den alten Download löschen.
Gruß Daniel
Anzeige
AW: Tipp für Günther
15.07.2019 17:15:29
Günther
Danke Daniel für die Tipps.
Ich werde meinen Grundsätzen dennoch treu bleiben. Da ich seit über 35 Jahren in der EDV/IT tätig bin, gehe ich kein Risiko ein. Und erst recht nicht, wenn ich Kunden-Daten oder ein VB(A)-Projekt (für Kunden) auf meinem Rechner habe.
Derjenige, der im Forum kostenlose Hilfe haben möchte, kann ja das File als *.xlsx speichern und den Code regelgemäß exportieren. Dann gehe ich keinerlei vermeidbares Risiko ein. Und über einen ZweitRechner zu gehen ist mir zu umständlich.
Gruß
Günther
AW: Zeilen löschen - immer nach diesem Schema
15.07.2019 13:30:03
Daniel
Hi
Löschen von Zeilen geht bei größeren Datenmengen am einfachsten und schnellsten so:
1. kennzeichne in einer Hilfsspalte alle Zeilen, die gelöscht werden sollen mit 0 und die die stehen bleiben müssen mit der Zeilennummer
in deinem Fall die Formel: =Wenn(ZählenWenn(Löschliste!A:A;A1)=0;Zeile();0)
2. schreibe in die Überschriftenzeile der Hilfsspalte ebenfalls die 0
3. wende auf die ganze Tabelle die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN an, mit der Hilfsspalte als Kriterium und der Option "keine Überschrift"
4. lösche die Hilfsspalte
diese 4 einfachen Schritte lassen sich nicht nur von Hand, sondern auch per Makro ausführen:
With Sheets("Übersicht").UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(CountIf(Löschliste!C1,RC1)=0,Row(),0)"
.Cells(1, 1).VAlue = 0
.EntireRow.RemoveDuplicates .column, xlno
.ClearContents
end with
end with
Gruß Daniel
Anzeige

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige