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

Zeilen löschen wenn nicht Wert entspricht

Zeilen löschen wenn nicht Wert entspricht
19.12.2018 09:47:01
Lucky
Hallo,
ich habe mal eine Tabelle angehängt. Im Grunde ist in Spalte A die Nummerierung von 1-6 und diese kommt x mal vor. Es geht darum wenn in Spalte A eine 1 steht dann soll in Spalte D in der gleichen Zeile dann mit "KEG" anfangen. Wenn das Wahr ist, dann soll 1-6 bleiben. Dann gehts zur nächsten 1. Wieder überprüfen ob es mit "KEG" anfängt. Wenn nicht, dann lösche 1-6 der betroffenen Zeile. Ich hoffe ich konnte es gut erklären.
https://www.herber.de/bbs/user/126206.xlsx

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen wenn nicht Wert entspricht
19.12.2018 10:06:58
UweD
Hallo
Füge eine Überschrift ein
setze die Filtern auf B und D
B auf "=1"
D auf "beginnt nicht mit" KEG
Dann die angezeigten Zeilen löschen
Oder soll das per VBA geschehen?
LG UweD
AW: Zeilen löschen wenn nicht Wert entspricht
19.12.2018 10:13:01
Lucky
Soll per VBA geschehen bitte.
AW: Zeilen löschen wenn nicht Wert entspricht
19.12.2018 10:50:08
Bernd
Servus Lucky,
teste mal:

Sub test()
Dim i As Integer
Dim intLZ As Integer
Dim j As Integer
With ActiveSheet
intLZ = .Cells(Rows.Count, 1).End(xlUp).Row
For i = intLZ To 1 Step -1
If .Cells(i, 1).Value = 1 And InStr(1, .Cells(i, 4).Value, "KEG", vbTextCompare) > 0  _
Then
For j = 0 To 5
.Rows(i).EntireRow.Delete
Next j
End If
Next i
End With
End Sub
Grüße, Bernd
Anzeige
AW: Zeilen löschen wenn nicht Wert entspricht
19.12.2018 10:52:25
Bernd
Servus Lucky,
sorry, genau andersherum:

Sub test()
Dim i As Integer
Dim intLZ As Integer
Dim j As Integer
With ActiveSheet
intLZ = .Cells(Rows.Count, 1).End(xlUp).Row
For i = intLZ To 1 Step -1
If .Cells(i, 1).Value = 1 And InStr(1, .Cells(i, 4).Value, "KEG", vbTextCompare) = 0  _
Then
For j = 0 To 5
.Rows(i).EntireRow.Delete
Next j
End If
Next i
End With
End Sub
Grüße, Bernd
AW: Zeilen löschen wenn nicht Wert entspricht
19.12.2018 11:15:49
Lucky
Vielen Dank die Lösung ist korrekt. Läuft auch flüssig :)
AW: Zeilen löschen wenn nicht Wert entspricht
19.12.2018 11:53:27
UweD
Hallo nochmal
Ohne Schleife, durch Nutzung Formel und Duplikate entfernen
Sub KEG()
    With ActiveSheet
        .Rows(1).Insert
        With .Cells(1, 7).Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 1)
            .FormulaR1C1 = _
                "=IF((RC[-6]<>1)*(RC[-6]<>"""")+(RC[-6]=1)*(LEFT(RC[-3],3)=""KEG""),ROW(),""x"")"
        End With
        .Cells.RemoveDuplicates Columns:=7, Header:=xlNo
        .Columns(7).ClearContents
        .Rows(1).Delete
    End With
End Sub

LG UweD
Anzeige
AW: Zeilen löschen wenn nicht Wert entspricht
19.12.2018 13:51:53
Daniel
Hi
Zeilen löschen mit Bedingung geht am besten immer mit einem Makro nach diesem Schema (hier passend für dein Problem):
Sub ZeilenLöschen()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1)
With .Offset(1, 0).Resize(.Rows.Count - 1)
.FormulaR1C1 = "=IF(RC1=1,IF(Left(RC4,3)=""KEG"",row(),0),if(R[-1]C=0,0,Row()))"
End With
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlNo
.ClearContents
End With
End With
End Sub

da allerdings diese Methode prinzipbedingt immer mindestens eine Zeile stehen lassen muss, solltest du vorher noch eine Überschriftenzeile einfügen (diese sollte nicht leer sein, sondern Texte enthalten)
Gruß Daniel
Anzeige

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige