Live-Forum - Die aktuellen Beiträge
Datum
Titel
01.03.2024 22:49:01
01.03.2024 22:31:05
01.03.2024 19:13:27
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
828to832
828to832
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro: Falls in einer Zelle "0" Zeile löschen

Makro: Falls in einer Zelle "0" Zeile löschen
19.12.2006 14:36:41
bion
Hallo!
Ich habe von Makroprogrammierung leider keine Ahnung, könnte aber dringend eines gebrauchen:
Es so schauen, ob in der Zelle B2 eine "0" ist und falls ja die Zeile löschen, falls nicht in die nächste Zeile springen und das gleiche tun - bis zum Ende der Tabelle.
Ich würde das mit einer Schleife und einer IF-Abfrage machen, aber leider kenne ich die VBA Befehle nicht. Für Hilfe wäre ich sehr dankbar!
Gruß,
Bion

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro: Falls in einer Zelle "0" Zeile löschen
19.12.2006 14:43:34
Rudi
Hallo,
bemüh doch mal die Suche. 4070 Treffer für Zeile löschen.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Makro: Falls in einer Zelle "0" Zeile löschen
19.12.2006 14:49:26
UweD
Hallo
prüft nur auf Null, Wenn Zelle leer ist, bleibt die Zeile drin...
Man geht die Sache aber am besten von hinten nach vorne an...

Sub NullRaus()
On Error GoTo Fehler
Dim SP%, ZE&, LR&, TB1, i&
Set TB1 = ActiveSheet
SP = 2 'Spalte B
ZE = 2 'Zeile 2
LR = TB1.Cells(Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
Application.ScreenUpdating = False
For i = LR To ZE Step -1
If TB1.Cells(i, SP).Value <> "" And TB1.Cells(i, SP).Value = 0 Then
TB1.Rows(i).EntireRow.Delete
End If
Next
Fehler:
If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.ScreenUpdating = True
End Sub

Gruß UweD
(Rückmeldung wäre schön)
Anzeige
AW: Makro: Falls in einer Zelle "0" Zeile löschen
19.12.2006 15:14:34
bion
Super, das klappt. Vielen Dank! Jetzt muss ich nur noch abwarten, bis meine 60000 Zeilen abgearbeitet sind.
AW: Makro: Falls in einer Zelle "0" Zeile löschen
19.12.2006 15:00:10
Luc:-?
Hallo Bion,
hier ist auch noch was Vglbares.
Gruß Luc :-?
0 Zeilen filtern und löschen per Code
19.12.2006 16:00:00
Beate
Hallo Bion,
wenn in Zeile1 Überschriften liegen geht das sehr schnell:
Sub Null_Zeilen_loeschen_mit_Autofilter()
'Voraussetzung: Liste beginnt in Zeile 1 (Überschriften)
With ActiveSheet.UsedRange ' This Will Take The Whole Cells In The Active Sheet...
    .AutoFilter Field:=2, Criteria1:="0" ' Everything 0
    .Offset(1, 0).Resize(.Rows.Count, .Columns.Count). _
        SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
    .AutoFilter
End With
End Sub


Gruß,
Beate
Anzeige
Achtung AutoFilter-Problem bei vielen Zeilen
19.12.2006 19:48:24
Daniel
Hallo
ich glaube es wurden gerade 60.000 Zeilen erwähnt.
Da wird die Schleife ne weile brauchen und der Autofilter hat das Problem, daß er bei vielen Zeilen (bei mir so ab c.a. 35000) einfach alles löscht, egal ob sichtbar oder nicht.
Ne lösung dafür wäre, die Daten vor dem Filtern und löschen zu SORTIEREN, so daß alle zu löschenden Zeilen LÜCKENLOS untereinander stehen.
Dann hat Excel auch kein Problem mit den vielen Zeilen und es geht superschnell.
dh, Code für Löschen mit Autofilter so modifieren:

Sub Null_Zeilen_loeschen_mit_Autofilter()
'Voraussetzung: Liste beginnt in Zeile 1 (Überschriften)
With ActiveSheet.UsedRange ' This Will Take The Whole Cells In The Active Sheet...
.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
.AutoFilter Field:=2, Criteria1:="0" ' Everything 0
.Offset(1, 0).Resize(.Rows.Count, .Columns.Count). _
SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
.AutoFilter
End With
End Sub

nach dem Löschen kannst du dann ja wieder in die alte Reihenfolge zurücksortieren (so es eine gibt)
Gruß, Daniel
Anzeige
Anderer Ansatz
19.12.2006 20:05:55
Beate
Hallo Daniel,
diese Beschränkung kannte ich nicht - aber stimmt! Danke.
Hier noch eine schnelle Lösung, insofern bisher keine Leerzellen in Spalte B sind:
Sub Null_Zeilen_loeschen()
'geht nur richtig, wenn keine Leerzellen in Spalte B sind!
'die würden sonst ungewollt mitgelöscht
Columns("B:B").Replace 0, "", xlWhole
Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub



Gruß,
Beate
Anzeige
AW: Anderer Ansatz - gleiches Problem
19.12.2006 20:31:45
Daniel
Hallo
auch ne sehr elegante Lösung, wenn keine anderen Leerzellen vorhanden sind, die eigentlich stehen bleiben sollen.
Allerdings besteht hier das gleiche Problem, ab einer bestimmten Zeilenzahl wird die Funktion langsam oder stürzt sogar ganz ab.
Ursache ist aber auch hier wieder nicht die Menge der der Zeilen, sondern die Aufsplitterung.
dh. auch hier sollte vorher sortiert werden.
Sind die Zeilen sortiert, so daß alle zu löschenden Zeilen lückenlos beisammen stehen, gehts rasend schnell, dann spielt die Anzahl der Zeilen fast keine Rolle mehr.
Wer will, kann die verschiedenen Methoden (Schleife, Specialcells) hier mal ausprobieren.
https://www.herber.de/bbs/user/39118.zip
Gruß, Daniel
Anzeige
Replace-Makro zum Zeilenlöschen
20.12.2006 10:44:16
Beate
Hallo Daniel,
das Replace-Makro läuft bei mir problemlos auch ohne Sortierung. Mag ja an der Excel Version liegen.
Wenn man das Makro so modifiziert, bleiben auch Zeilen erhalten, die leer in Spalte B sind:
Sub Null_Zeilen_loeschen2()
'so geht es auch mit Leerzellen im Bereich, wenn deren Zeilen erhalten
'bleiben sollen. vorher die Leerzellen in einen String ändern,
'der ansonsten nicht in der Spalte vorkommt;
'nach 0-Zellen Löschung werden diese Zellen dann wieder in Leerzellen
'gewandelt
Columns("B:B").Replace "", "#", xlWhole
Columns("B:B").Replace 0, "", xlWhole
Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Columns("B:B").Replace "#", "", xlWhole
End Sub

Danke für deine Beispieldatei.
Gruß,
Beate
Anzeige
AW: Replace-Makro zum Zeilenlöschen
21.12.2006 00:49:39
Daniel
Hallo
der Replace ist ja auch nicht das Problem.
die Delete-Funktion kommt ins Stocken, wenn zuvielen Einzelzellen selektiert sind.
Könnte natürlich auch ein Speicherplatz- abhängiges Problem sein
gruß, Daniel
Anderer Ansatz
19.12.2006 20:05:55
Beate
Hallo Daniel,
diese Beschränkung kannte ich nicht - aber stimmt! Danke.
Hier noch eine schnelle Lösung, insofern bisher keine Leerzellen in Spalte B sind:
Sub Null_Zeilen_loeschen()
'geht nur richtig, wenn keine Leerzellen in Spalte B sind!
'die würden sonst ungewollt mitgelöscht
Columns("B:B").Replace 0, "", xlWhole
Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub



Gruß,
Beate
Anzeige

42 Forumthreads zu ähnlichen Themen


https://www.herber.de/bbs/user/63555.xls
Hallo Forum,
bin am verzweifeln. Ich hatte die Frage schon vor ein paar Tagen gestellt und auch
eine Antwort erhalten, es will aber einfach nicht klappen:
Es geht "nur" darum, einen bestimmten Bereich auf genau 10 Seiten A4 zu drucken.
Anzeige

Hallo zusamenn! Ich bin relativ neu in der excel-Welt und daher hört sich meine Frage bestimmt echt lächerlich an:
Ich möchte in einer Exceltabelle mit einem Makro bestimmte Zeilen bzw. Spalten löschen. Das Problem, die unbearbeiteten Tabellen können unterschiedlich lang sein und auch manch...

Hi, habe wieder einen kleinen Fehler
Möchte alle Zeilen löschen, wo in Spalte E eine Leerzelle ist. Mein Makro läuft sich tot, wahrscheinlich, weil es sich nicht auf ein Datenende bezieht. Wie muss ich es umbauen, damit die Löschfunktion der Zeilen endet, wenn in Spalte A kein Wert mehr ste...
Anzeige

Guten Morgen,
ich habe eine Tabelle mit Kombobox und einem Diagramm mit gestapelten Balken. Nun kommt es leider vor, dass einige Ausprägungen keine Daten haben. Dann wird im Datenpunkt immer 0,0 angezeigt. Gibt es eine Möglichkeit (mit oder ohne VBA), diese Punkte zu löschen und nur die Wer...

Guten Tag
Wie kann ich vermeiden beim untenstehende Code ein RC22 (hätte lieber ein Range oder Cells) einzugeben. Ich möchte, dass alle Zeilen mit Eintrag O oder P in Spalte B gelöscht werden.
Besten Dank im voraus.
Martin
'O und P löschen
With xxx.UsedRange
With .Colum...

Schönen Samstag zusammen
Nachfolgendes Problem bekomme ich nicht hin:
Ich kopiere einen Textblock bestehend aus 9 Zellen in die nächste freie Zelle in Spalte C eines Arbeitsblattes.
Innerhalb dieser 9 Zellen gibt es immer wieder mal Zellen mit einem Nullwert.
Wie kann ich per VB...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige