arndttob
Goto Top

Zeilen löschen, wenn diese bestimmte Kriterien nicht erfüllen

Hallo Programmierer,
ich habe wiedermal eine Bitte an euch.
Habe versucht mir die Antworten per Google einzuholen, hat aber nichts geholfen.
Nun hoffe ich auf eure Hilfe

undzwar habe ich eine Tabelle mit etlichen Zeilen und viele davon werden nicht benötigt.

Über Spalte E sollen alle Zeilen gelöscht werden, welche NICHT "1, 5, 12 oder 15" enthalten.

Könnt Ihr mir bei dem Problem helfen?
Wäre euch sehr dankbar.

Viele Grüße
Tobi

Content-Key: 137882

Url: https://administrator.de/contentid/137882

Printed on: April 19, 2024 at 21:04 o'clock

Member: H41mSh1C0R
H41mSh1C0R Mar 10, 2010 at 13:20:40 (UTC)
Goto Top
Hallo Tobi,

Was brauchst du alles?:

- eine Schleife die deine Spalte E durchläuft bis der letzte Eintrag erreicht ist
- Wertevergleich der die Zelle mit 1, 5, 12 oder 15 vergleicht
- Befehl zum Zeile entfernen
Rows("zeile:zeile").Select
Selection.Delete Shift:=xlUp

Das Ganze packst du in ein Makro und führst es aus =).

Kleiner Tip: für viele Sachen ist der Makrorecorder dein Bester Freund.

Grüße
Mitglied: 76109
76109 Mar 10, 2010 at 13:32:20 (UTC)
Goto Top
Hallo Tobi!

In Spalte E wird der Inhalt mit den Suchbegriffen im Suchtext (durch Kommata getrennt) verglichen.

Im Suchtext kann auch das "*"-Zeichen für einen Teil-Text-Vergleich verwendet werden z.B.:
Suchtext = "Clienttest, Clientv3, EUC, EUC_I_IS, EUC_CU_SFS" oder Suchtext = "Client*, EUC*"

Oder z.B. "Das ist ein Wort innerhalb eines Textes"
Suchtext = "*Wort*"
wird auch als Übereinstimmung gewertet.

Außerdem stehen noch das "?"-Zeichen für 1 beliebiges Zeichen und das Zeichen "#"-Zeichen für 1 beliebigen numerischen Wert zur Verfügung.

Quellcode im VB-Editor in ein Modul kopieren und Konstanten entsprechend anpassen:
Option Explicit
Option Compare Text

Const SheetNamen = "Tabelle1"  
Const SuchSpalte = "E"  

Const Suchtext = "Clienttest, Clientv3, EUC, EUC_I_IS, EUC_CU_SFS"  

Sub DeleteLine()
    Dim Text As Variant, Found As Boolean, i As Long, EndLine As Long, s As Integer
    
    Sheets(SheetNamen).Activate
    
    EndLine = Cells(Rows.Count, SuchSpalte).End(xlUp).Row
    
    Text = Split(Suchtext, ",")  
    
    Application.ScreenUpdating = False

    For i = 1 To EndLine
        If i > EndLine Then Exit For
        Found = False
        For s = 0 To UBound(Text)
            If Cells(i, SuchSpalte) Like Trim(Text(s)) Then Found = True:  Exit For
        Next
        If Found = False Then Rows(i).Delete:  i = i - 1:  EndLine = EndLine - 1
    Next
    Application.ScreenUpdating = True
End Sub

Gruß Dieter

PS. Also der Beitrag wurde geändert und mein Code-Beispiel entspricht dem vorherigen Text???? Ist aber auch egalface-wink
Member: arndttob
arndttob Mar 10, 2010 at 13:33:02 (UTC)
Goto Top
Hallo H41mSh1C0R

ich würde es am Liebsten so haben:
Zeile 1 Spalte G wird angeschaut
Wenn dieser Eintrag keine 1, 5, 12 oder 15 ist, wird die gesamte Zeile gelöscht.
Zeile 2 Spalte G wird angeschaut
Wenn dieser Eintrag keine 1, 5, 12 oder 15 ist, wird die gesamte Zeile gelöscht.
Zeile 3 Spalte G...
usw

Mit dem Makrorecorder habe ich mich auch schon auseinander gesetzt.
Aber bei ca. 300 Zeilen ist das eine happige Angelegenheit face-smile

Aber auf jedenfall vielen Dank für deine Hilfe
Member: RedWraith
RedWraith Mar 10, 2010 at 13:33:27 (UTC)
Goto Top
Also, wenn zum Beispiel in E:36 eine "15" steht, dann soll die gesamte Zeile 36 entfernt werden ?

ZOMG: Während Ich mein Miniposting geschrieben habe, waren jede Menge andere Leute schneller...
Member: arndttob
arndttob Mar 10, 2010 at 14:02:18 (UTC)
Goto Top
Super genau so wollte ich es haben @ didi

vielen Dank für eure schnelle spitzenmäßige Hilfe ;)

Habt Dank
Gruß
Tobi
Mitglied: 76109
76109 Mar 10, 2010 at 14:05:32 (UTC)
Goto Top
Hallo Tobi!

Yepp, gern geschehenface-wink

Gruß Dieter

PS. Zeile 14 geändert von Spalte A nach SuchSpalte