Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
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 Wort gefunden wird

Zeile Löschen wenn Wort gefunden wird
17.07.2018 08:11:06
Torsten
Hallo
habe ein Problem das ich nicht lösen kann. Brauche das mit VBA Makro!!
Ich haben in Excel 4 Spalten.
Das Marko muss in Spalte D suchen ob das Wort "INFO" beeinhaltet ist.
Wenn dies der Fall ist muss die ganze Zeile gelöscht werden.
Es muss die ganze Spalte D durchsucht werden, da es mehrere Zeilen geben kann die das Wort Info beeinhalten können.
Soweit könnt ich das noch lösen. Das Problem ist nur das das Wort Info in der Zelle nicht alleine steht. Es steht immer INFO MAIER oder INFO KARL. Splitten der Spalte ist auch nicht möglich, da in den anderen Spalten wo nicht INFO drin steht ein Datum drin steht was nciht gesplitet werden soll.
Ich habe es nun so. Das Problem ist das er nach einer Zelle sucht wo nur INFO drin steht. Was ja nicht der Fall ist
Sub Löschen()
Dim i     As Integer
Dim intLR As Integer
Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeLastCell).Select
intLR = Selection.Row
With Sheets("Tabelle 1")
For i = 1 To intLR
If InStr(1, .Cells(i, 4).Value, "Info") Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
i = i - 1
Else
End If
Next i
End With
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Zeile Löschen wenn Wort gefunden wird
17.07.2018 08:19:43
Bernd
Servus Torsten,
probier es mal damit:

Sub Löschen()
Dim i     As Integer
Dim intLR As Integer
Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeLastCell).Select
intLR = Selection.Row
With Sheets("Tabelle1")
For i = intLR To 2 Step -1
If InStr(1, .Cells(i, 4).Value, "Info") > 0 Then
Rows(i & ":" & i).Select
Selection.Delete Shift:=xlUp
End If
Next i
End With
End Sub
Grüße, Bernd
AW: Zeile Löschen wenn Wort gefunden wird
17.07.2018 08:22:42
ChrisL
Hi
1. "Tabelle1" vs. "Tabelle 1"
2. Löschen Schleifen lässt du besser rückwärts laufen (dann entfällt auch i = i-1)
3. Bei grösseren Datenmengen würde sich z.B. eine Variante mit Autofilter empfehlen
Abgesehen davon ist deine If-Then Bedingung eigentlich OK. Allerdings Case-sensitive (Gross-/Kleinschreibung).
Sub Löschen()
Dim i     As Integer
Dim intLR As Integer
' Case sensitive
Application.ScreenUpdating = False
With Sheets("Tabelle1")
intLR = .Cells.SpecialCells(xlCellTypeLastCell).Row
For i = intLR To 1 Step -1
If InStr(1, .Cells(i, 4).Value, "Info") Then _
.Rows(i).Delete Shift:=xlUp
Next i
End With
End Sub
Sub Löschen2()
Dim i     As Integer
Dim intLR As Integer
' Nicht case sensitive
Application.ScreenUpdating = False
With Sheets("Tabelle1")
intLR = .Cells.SpecialCells(xlCellTypeLastCell).Row
For i = intLR To 1 Step -1
If .Cells(i, 4) Like "*info*" Then _
.Rows(i).Delete Shift:=xlUp
Next i
End With
End Sub
cu
Chris
Anzeige
Variablen als LONG deklarieren
17.07.2018 09:06:19
Matthias
Hallo
Es muss die ganze Spalte D durchsucht werden
Dann solltest Du die Variablen als LONG deklarieren.
Desweiteren musst Du überlegen, ob Du wirklich alles löschen willst, was "Info" beinhaltet.
Es gibt auch Wörter wie: Informatik oder ínfolgedessen.
Um auch wirklich alles zu löschen was "info" beinhaltet, kannst Du noch ein Lcase einsetzen.
Das sehe dann so aus (um mal beim Code von Chris zu bleiben)
Dim i&, intLR&
Application.ScreenUpdating = False
With Sheets("Tabelle1")
intLR = .Cells.SpecialCells(xlCellTypeLastCell).Row
For i = intLR To 1 Step -1
If LCase(.Cells(i, 4)) Like "*info*" Then .Rows(i).Delete Shift:=xlUp
Next i
End With
Gruß Matthias
Anzeige
AW: Variablen als LONG deklarieren
17.07.2018 10:08:32
Torsten
Ok, danke für die Hilfe
nur eine Frage. Warum zeigt er bei intLR die Zeile 520 an wenn die Tabelle nur bis 507 geht
AW: Variablen als LONG deklarieren
17.07.2018 11:01:07
Daniel
Hi
"LastCell" ist für Excel eine wichtige Größe.
Sie Definiert den Zellbereich, für den in Excel Speicherplatz reserviert wird.
Daher handelt Excel hier nach dem Motto: lieber etwas zu groß, dafür nie zu klein.
Dh die LastCell wird nicht bei allen Löschungen sofort angepasst, sondern manchmal erst beim Öffnen der Datei.
Auch Zellen mit Formatierungen können die LastCell beeinflussen.
Gruß Daniel
Ergänzung
18.07.2018 01:26:40
Luc:-?
Morrn, Torsten (& Daniel);
die LastCell ist immer die rechte untere eines (auch teilweise) belegten ZellBereichs, der ggüber den restlichen StandardZellen in der Spalte oder Zeile dieser Zelle Abweichungen aufweist. Löscht man alle Inhalte von Zellen oder entfernt Zeilen u/o Spalten in Gänze, muss man die Datei erst speichern, damit das manifest, Xl also veranlasst wird, das neue Belegungsbild zu übernehmen. Demggüber wirkt ein Neueintrag aber sofort, auch ohne vorherige Speicherung!
🙈 🙉 🙊 🐵 Morrn, Luc :-?
„Die Intelligenzmenge ist auf diesem Planeten eine Konstante, die Bevölkerung nimmt aber zu!“ Auch deshalb informieren mit …
Anzeige
AW: Zeile Löschen wenn Wort gefunden wird
17.07.2018 11:04:37
Daniel
Hi
Nochmal ne tricky-Variante:
with Columns(4)
.replace "*info*", true, xlwhole
.Specialcells(xlcelltypeconstants, 4).entirerow.delete
Ende with
Gruß Daniel

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige