Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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

Jede xte Zeile löschen, wenn alle 0 sind

Jede xte Zeile löschen, wenn alle 0 sind
03.10.2020 15:03:46
Julia
Hallo zusammen,
das ist mein erster Beitrag hier und ihr habt mir schon oft bei meinen VBA Problemen geholfen. Mein jetziges habe ich aber leider nirgends gefunden.
Meine Werte sehen als Minmalbeispiel so aus, in Wirklichkeit deutlich mehr Zeilen und Spalten:
1 1 1 1
1 1 1 1
0 0 0 0
0 0 0 0
1 1 1 1
<b>0 0 0 0</b>
0 0 0 0
0 0 0 0
-->
1 1 1 1
1 1 1 1
1 1 1 1
<b>0 0 0 0</b>
Mein Ziel ist es, Zeilen in denen nur Nullen stehen zu löschen, falls die 0er Zeilen in jeder x-ten Zeile vorkommen. In diesem Fall würde dies bedeuten, dass die Zeilen 3 und 4 gelöscht würden, weil die Zeilen 7 und 8 ebenfalls 0er Zeilen sind, die Spalte 6 aber eben nicht (da die zweite Zeile keine 0 ist).
Ich habe schon viel rumprobiert, komme aber nicht auf richitge Ergebnis.
Mein Ansatz:
Sub Zeilenlöschen()
Dim ws As Worksheet
Set ws = Worksheets(1)
ls = ws.Cells(1, wsQ.Columns.Count).End(xlToLeft).Column
lz = ws.Cells(wsQ.Rows.Count, 1).End(xlUp).Row
For i = 1 To lz
If Application.CountIf(Range(Cells(i, 1), Cells(i, ls)), 0) = 4 Then
'hier soll dann jede weitere xte Zeile überprüft werden, ob sie alle 0 sind und wenn ja gelöscht werden
Vielen Dank für eure Hilfe!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Jede xte Zeile löschen, wenn alle 0 sind
03.10.2020 15:11:24
Hajo_Zi
Benutze Autofilter und lösche den sichtbaren Bereich, Start, Bearbeiten, Suchen..., Gehe zu, Inhalte, sichtbare Zellen.
Excel hat auch einen Makrorecorder.

AW: Jede xte Zeile löschen, wenn alle 0 sind
03.10.2020 18:19:01
Günther
Moin,
ich bin mir nicht sicher, ob die vorgeschlagene Lösung zielführend ist …
In dem Fall wäre eine mathematische Definition des Begriffs/Wertes "x" hilfreich, und mich stört enorm die (wahrscheinlich vorgesehene) Fett-Formatierung, sprich der HTML-Code dafür.
 
Gruß
Günther  |  mein Excel-Blog
Anzeige
AW: Jede xte Zeile löschen, wenn alle 0 sind
04.10.2020 10:37:11
Julia
Hallo Günther,
In diesem Fall bedeutet x = 4. Also ob in jeder vierten Zeile alle Werte 0 sind. Wenn ja, sollen alle diese Zeilen gelöscht werden. Im obigen Beispiel also Zeilen 3 und 7, 4 und 8. Zeile 6, die ja ebenfalls eine 0er Zeile ist, bleibt aber bestehen, da eben Zeile 2 keine ist.
1 1 1 1 1
2 1 1 1 1
3 0 0 0 0
4 0 0 0 0
5 1 1 1 1
6 0 0 0 0
7 0 0 0 0
8 0 0 0 0
wird zu
1 1 1 1 1
2 1 1 1 1
5 1 1 1 1
6 0 0 0 0
Ja, die Fett-Formatierung hatte aus irgendeinem Grund nicht funktioniert, sorry!
Grüße Julia
Anzeige
AW: Jede xte Zeile löschen, wenn alle 0 sind
04.10.2020 12:04:43
Günther
Moin Julia,
ich denke, dass ich jetzt besser verstanden habe, was du erreichen willst.
Und falls keine der angebotenen Lösungen passt: ich würde das mit Power Query lösen. Meine beispielhafte Lösung bzw. einen Link bekommst du und (fast) jeder Anfragende per E-Mail (bitte auch den User-Namen mit angeben). Natürlich kostenlos, solange du nicht weitere Wünsche äußerst.
Damit ich auch weiß, worum es geht: Anfragen bitte mit dem Stichwort "Julias x=4 Filter" per Mail an mich (mein Name ist der Link zur Mail-Adresse). Und wenn du es nicht ausdrücklich das Gegenteil wünscht, werde ich deine Mail-Adresse sofort wieder löschen. Ich möchte keine Mailadressen behalten sondern dein Vertrauen!
Nur das Ergebnis (zur Evaluierung, ob es sich lohnt): https://my.hidrive.com/lnk/frAmj6TX (meine DE-Cloud).
 
Gruß
Günther  |  mein Excel-Blog
Anzeige
AW: Jede xte Zeile löschen, wenn alle 0 sind
03.10.2020 20:16:08
Daniel
hi
kannst du mal genauer beschreiben, wann genau gelöscht werden soll?
so wie ich das beispiel deute, soll jede 3. Nullzeile gelöscht werden wobei die 3 auch variabel sein kann.
ich würde hier mit formeln und Hilfsspalten arbeiten, um in einem ersten schritt die zu löschenden Zeilen zu markieren und dann zu löschen.
1. formel für E1 bis Ende. diese Formel kennzeichnet die Null-Zeilen mit 1:
 =1*(zählenWenn($a1:d1;"0")=0)

2a. in f1 die formel:
=e1

2b. formel ab F2 bis ende, diese Formel zählt die Nullzeilen hoch:
=e2+f1

3a.in die Zelle G1 kommt die 0
3b. ab Zelle G2 bis ende diese Formel, sie kennzeichnet die zu löschenden Zeilen mit 0 und die anderen mit der Zeilennummer.
=wenn(und(e2=1;rest(f2;3)=0);0;zeile())
wenn man das soweit hat kann man die mit 0 gekennzeichneten Zeilen einfach über
daten - datentools - duplikate entfernen löschen. dabei die option "keine Überschrift" verwenden.
dann löscht man die Hilfsspalten wieder.
probiers erstmal von Hand aus, wenn es funktioniert und du es verstanden hast, programmierst du einfach diese Schritte in VBA nach.
das ist der einfachste und schnellste Weg um in großen Listen sehr schnell viele Zeilen mit bedingung zu löschen
außrdem hilft der Recorder beim erstellen des codes.
gruß Daniel
Anzeige
AW: Jede xte Zeile löschen, wenn alle 0 sind
04.10.2020 10:48:59
Julia
Hallo Daniel,
Danke für deine Antwort. Ich glaube, ich habe mich nicht deutlich genug ausgedrückt. Ich möchte schauen, ob es in jeder vierten Zeile eine 0er Zeile gibt und wenn das für ALLE vierten Zeile gilt, dann sollen sie alle gelöscht werden:
also im ersten schritt würden Zeilen 1 und 5 überprüft werden -- nur 0er Zeilen? Nein! -- keine Zeilen löschen.
Nächster Schritt sind Zeilen 2 und 6 -- Beides 0er Zeilen? Nein -- Nichts löschen.
Nächster Schritt sind Zeilen 3 und 7 -- Beides 0er Zeilen? Ja! -- Beide Zeilen löschen
usw.
Ich hoffe, so wird es etwas deutlicher.
Ich habe deine Methode ausprobiert, sie kommt aber leider nicht zum richtigen Ergebnis.
Danke und Gruß
Julia
Anzeige
AW: Jede xte Zeile löschen, wenn alle 0 sind
04.10.2020 11:15:47
Daniel
In dem Fall reichen dir zwei Hilfsspalten und das Formelwerk wäre:
In Spalte E wieder:
=1*(zählenWenn($a1:d1;"0")=0)
In Spalte F von F1 bis F4:
=Wenn(und(F1;F5);0;Zeile())

Ab F5 dann
=Wenn(Oder(und(F1;F5);und(F5;F9));0;Zeile())

Dann das Duplikateentfernen mit Spalte F als Kriterium.
Gruß Daniel
AW: Jede xte Zeile löschen, wenn alle 0 sind
03.10.2020 22:13:47
GerdL
Moin Julia!
Sub Unit()
Dim rngDel As Range, C As Range, Z As Long
Set rngDel = Rows(Rows.Count)
For Each C In Cells(1).CurrentRegion.Rows
If Application.Sum(C) = 0 Then
Z = Z + 1
If Z = 3 Then
Set rngDel = Union(rngDel, Rows(C.Row))
Z = 0
End If
End If
Next
rngDel.Delete
Set rngDel = Nothing
End Sub

Gruß Gerd
Anzeige
AW: Jede xte Zeile löschen, wenn alle 0 sind
04.10.2020 10:55:39
Julia
Hallo Gerd,
danke für deine Lösung! Ich habe den anderen nochmal genauer geschrieben, wie ich das gemeint hatte.
Ich verstehe deine Lösung aber kann sie leider nicht auf mein Problem ummünzen..
Danke und Grüße
Julia

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige