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

Zeile löschen, wenn Wert nicht vorhanden

Zeile löschen, wenn Wert nicht vorhanden
20.11.2021 04:21:49
Stephan
Hallo Zusammen,
ich habe eine Tabelle, in dieser möchte ich, sofern in Spalte B nicht der Monat XY steht alle anderen Zeilen löschen. Dabei habe ich den Monat als Zahlenformat vorliegen, bspw. 01.11.2021. Ich habe mich schon einmal versucht, ohne Erfolg. Freue mich über Unterstützung. Grüße Stephan

Sub Test()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Tabelle_1")
Dim i As Long
Do While ws.Range("A2").Offset(i, 0).Value  ""
If Not ws.Range("B2").Offset(i, 0).Value Like "*11*" Then
ws.Range("B2").Offset(i, 0).Delete
End If
i = i + 1
Loop
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen, wenn Wert nicht vorhanden
20.11.2021 07:44:39
Oberschlumpf
Hi Stephan
willst du wirklich Zeilen löschen oder Zellen?
Du schreibst "...alle anderen Zeilen löschen"
Aber der Befehl...

ws.Range("B2").Offset(i, 0).Delete
...löscht nur die jeweilige Zelle in Spalte B
Und egal, ob Zeilen oder Zellen gelöscht werden, die unter dem gelöschten Element stehenden Werte rutschen nach dem Löschen eine Zeile höher.
Somit muss beim Löschen von Zeilen oder Zellen mit dem Überprüfen in der letzten, benutzen Zeile begonnen werden und nicht in der ersten Zeile.
Und der Befehl...

If Not ws.Range("B2").Offset(i, 0).Value Like "*11*" Then
...gibt auch dann WAHR zurück und führt zum Lösch-Befehl bei z Bsp diesen Datumswerten:

11.03.2022
11.09.2020
Mit obigem Befehl wird geprüft, ob ein Wert die Zahl 11 enthält - egal, an welcher Stelle 11 steht...z Bsp auch 01.01.1911 würde nicht gelöscht werden.
Somit solltest du den Datumswert auch wirklich nur auf den Monat 11 überprüfen (was du ja eigentlich auch erreichen wolltest...vermute ich :-) )
Versuch es mal mit diesem Code:

Sub Test()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Tabelle1")
Dim i As Long
'For i = ws.Cells... beginnt in der letzten Zeile von Spalte A...
For i = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row To 2 Step -1
'... und prüft die Werte in Spalte B
If Month(ws.Range("B" & i).Value)  11 Then
'der nächste Befehl löscht nur die Zelle
ws.Range("B" & i).Delete
'der nächste Befehl löscht die ganze Zeile
'ws.Rows(i).Delete
End If
Next
End Sub
Hilfts?
Ciao
Thorsten
Anzeige
AW: Zeile löschen, wenn Wert nicht vorhanden
20.11.2021 16:22:58
Stephan
Hallo Thorsten,
ich wollte, dass die ganze Zeile gelöscht wird. Dein Makro klappt wunderbar. Vielen Dank dafür und ein schönes Wochenende.
Grüße
Stephan

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige