Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ganze Zeile löschen wenn Wert nicht vorhanden

Ganze Zeile löschen wenn Wert nicht vorhanden
31.07.2014 11:12:02
Chris
Hallo, zusammen!
Ich habe folgendes Problem:
In meiner Tabelle1 stehen im Bereich C5:Cx Zahlen. Ich möchte per VBA die ganze Zeile löschen, wenn die Zahlen in C nicht in Tabelle2 Bereich A2:Ay (selbe Datei) vorkommen. Ich habe es mit Find versucht, komme aber nicht wirklich weiter.
Vielen Dank schon mal vorab für Eure Hilfe

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Ganze Zeile löschen wenn Wert nicht vorhanden
31.07.2014 12:55:45
ChrisL
Hi Chris
Sub t()
Dim i As Long
Dim WS1 As Worksheet, WS2 As Worksheet
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
For i = WS1.Range("C65536").End(xlUp).Row To 5 Step -1
If WorksheetFunction.CountIf(WS2.Columns(3), WS1.Cells(i, 3)) = 0 Then _
WS1.Rows(i).EntireRow.Delete
Next i
End Sub
cu
Chris

Anzeige
AW: Ganze Zeile löschen wenn Wert nicht vorhanden
31.07.2014 13:32:05
Werner
Hallo Chris,
obwohl das "nicht" fett geschrieben ist habe ich es übersehen. Bei mir löscht er in Tabelle 1 wenn die Zahl in Tabelle 2 vorhanden ist. Da müsste lZelle=sZelle in lZellesZelle geändert und die Msg-Boxen angepasst werden.
Werner

AW: Ganze Zeile löschen wenn Wert nicht vorhanden
31.07.2014 12:57:07
Robert
Hallo Chris,
Ich gehe davon aus, dass du mit dem Bereich C5:Cx die Gesamte Spalte C meinst, beginnend bei Zeile 5.
Bei A2:Ay dementsprechend von Zeile 2 bis Ende.
Option Explicit
Dim i, o As Integer
Dim Matchfound As Boolean
Private Sub Test()
For i = Tabelle1.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 5 Step -1
Matchfound = False
For o = Tabelle2.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
If Tabelle1.Cells(i, 3) = Tabelle2.Cells(o, 1) Then
Matchfound = True
Exit For
End If
Next o
If Matchfound = False Then Tabelle1.Rows(i).Delete
Next i
End Sub

Anzeige
AW: Ganze Zeile löschen wenn Wert nicht vorhanden
31.07.2014 14:12:52
Chris
Hallo, Robert!
Danke, funktioniert super!

und noch ein Ansatz
31.07.2014 13:17:22
Michael
Hallo Leute,
ich hab es mal mit einer Matrixformel versucht:

D	Erg	F
1	1	1
2	1	2
3	1	3
6	0	4
7	0	5

die da lautet: {=SUMME(($F$16:$F$20=D16)*1)}
und in jeder Zeile unter E steht - muß natürlich an die entsprechenden Bereiche angepaßt werden.
Hinterher ist nur noch ein Schleifendurchlauf nach Erg=0 -> Löschen nötig.
Ich bin, ehrlich gesagt, ganz stolz, daß ich das Ding hinbekommen hab; ob es in der Praxis taugt, kann vielleicht jemand anderes beantworten: x-100 mal suchen dauert, aber ich vermute, daß die Matrixformel bei größeren Datenmengen eben auch Zeit benötigt.
Happy Exceling,
Michael

Anzeige
AW: Ganze Zeile löschen wenn Wert nicht vorhanden
31.07.2014 14:08:36
Daniel
Hi
Zeilen löschen in Excel ab Version 2007 funktioniert so am einfachsten:
1. in einer Hilfsspalte eine Formel einfügen, die alle Zeilen die gelöscht werden müssen mit 0 kennzeichnet und alle die stehen bleiben sollen mit der Zeilennummer
2. in die Überschriftenzeile kommt ebenfalls die 0
3. Daten - Datentools - Duplikate entfernen auf die Tabelle anwendnen mit der Hilfsspalte als Kriterium und "keine Überschrift"
bei grössern Datenmengen sollte man die Tabelle2 Spalte A aufsteigens sortieren, damit man die schnelle Variante des Sverweises verwenden kann.
Gruß Daniel
sieht für deinen Code so aus:
dim Zelle as Range
set Zelle = Sheets("Tabelle1").Cells.SpecialCells(xlcelltypelastcell).offset(0, 1)
With Range(Zelle.Offset(4 - Zelle.row), Zelle)
.FormulaR1C1 = "=IF(IsError(Match(RC3,Tabelle2!C1,0)),0,Row())"
.Formula = .Value
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlno
.Clearcontents
End with

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Ganze Zeile löschen, wenn Wert nicht vorhanden


Schritt-für-Schritt-Anleitung

Um in Excel ganze Zeilen zu löschen, wenn ein bestimmter Wert nicht vorhanden ist, kannst Du das folgende VBA-Skript verwenden. Dieses Beispiel geht davon aus, dass Du in Tabelle1 die Daten hast und in Tabelle2 nach den Werten suchst.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub t()
    Dim i As Long
    Dim WS1 As Worksheet, WS2 As Worksheet
    Set WS1 = Worksheets("Tabelle1")
    Set WS2 = Worksheets("Tabelle2")
    For i = WS1.Range("C65536").End(xlUp).Row To 5 Step -1
        If WorksheetFunction.CountIf(WS2.Columns(1), WS1.Cells(i, 3)) = 0 Then _
        WS1.Rows(i).EntireRow.Delete
    Next i
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, um alle Zeilen zu löschen, die nicht in Tabelle2 vorhanden sind.

Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht.

    • Lösung: Stelle sicher, dass die Tabellennamen korrekt sind und dass Du die Daten in den richtigen Bereichen hast.
  • Fehler: Zeilen werden fälschlicherweise gelöscht.

    • Lösung: Überprüfe die Logik des If-Statements. Stelle sicher, dass Du CountIf korrekt verwendest, um die Werte zu vergleichen.

Alternative Methoden

Eine weitere Möglichkeit, in Excel ganze Zeilen zu löschen, besteht darin, eine Hilfsspalte zu verwenden:

  1. Füge in Tabelle1 eine Hilfsspalte ein.
  2. Verwende folgende Formel, um die Zeilen zu kennzeichnen, die gelöscht werden sollen:
=IF(ISERROR(MATCH(C5, Tabelle2!A:A, 0)), 0, ROW())
  1. Wende die Formel auf die gesamte Hilfsspalte an.
  2. Verwende dann die Funktion "Duplikate entfernen" unter Daten -> Datentools, um die Zeilen zu löschen, die mit 0 gekennzeichnet sind.

Praktische Beispiele

Wenn Du eine Liste von Namen hast und nur die Namen entfernen möchtest, die nicht in einer anderen Liste sind, kannst Du das oben genannte VBA-Skript verwenden oder die Hilfsspalten-Methode.

Angenommen, in Tabelle1 befinden sich die Namen in Spalte C, und Du möchtest nur die Namen behalten, die auch in Tabelle2 in Spalte A sind.


Tipps für Profis

  • Überlege, ob Du anstelle von CountIf die Find-Methode verwenden möchtest, um die Suchgeschwindigkeit zu erhöhen, insbesondere bei großen Datenmengen.
  • Achte darauf, die Excel-Version zu beachten; die oben genannten Methoden funktionieren ab Excel 2007 problemlos.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass ich keine wichtigen Daten versehentlich lösche?
Antwort: Erstelle immer eine Sicherungskopie Deiner Daten, bevor Du Makros ausführst oder große Änderungen vornimmst.

2. Frage
Kann ich auch ganze Zeilen löschen, wenn der Wert in einer anderen Spalte nicht vorhanden ist?
Antwort: Ja, Du kannst die Logik im VBA-Code oder in der Formel anpassen, um andere Spalten zu berücksichtigen.

3. Frage
Was mache ich, wenn ich keine VBA-Makros verwenden möchte?
Antwort: Du kannst die Hilfsspalten-Methode verwenden, um die Zeilen manuell zu identifizieren und zu entfernen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige