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

Mitglied: arndttob

arndttob (Level 1)

10.03.2010, aktualisiert 13:29 Uhr, 12695 Aufrufe, 6 Kommentare

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
Mitglied: H41mSh1C0R
10.03.2010 um 14:20 Uhr
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
10.03.2010 um 14:32 Uhr
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:
01.
Option Explicit
02.
Option Compare Text
03.

04.
Const SheetNamen = "Tabelle1"
05.
Const SuchSpalte = "E"
06.

07.
Const Suchtext = "Clienttest, Clientv3, EUC, EUC_I_IS, EUC_CU_SFS"
08.

09.
Sub DeleteLine()
10.
    Dim Text As Variant, Found As Boolean, i As Long, EndLine As Long, s As Integer
11.
    
12.
    Sheets(SheetNamen).Activate
13.
    
14.
    EndLine = Cells(Rows.Count, SuchSpalte).End(xlUp).Row
15.
    
16.
    Text = Split(Suchtext, ",")
17.
    
18.
    Application.ScreenUpdating = False
19.

20.
    For i = 1 To EndLine
21.
        If i > EndLine Then Exit For
22.
        Found = False
23.
        For s = 0 To UBound(Text)
24.
            If Cells(i, SuchSpalte) Like Trim(Text(s)) Then Found = True:  Exit For
25.
        Next
26.
        If Found = False Then Rows(i).Delete:  i = i - 1:  EndLine = EndLine - 1
27.
    Next
28.
    Application.ScreenUpdating = True
29.
End Sub
Gruß Dieter

PS. Also der Beitrag wurde geändert und mein Code-Beispiel entspricht dem vorherigen Text???? Ist aber auch egal
Mitglied: arndttob
10.03.2010 um 14:33 Uhr
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

Aber auf jedenfall vielen Dank für deine Hilfe
Mitglied: RedWraith
10.03.2010 um 14:33 Uhr
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...
Mitglied: arndttob
10.03.2010 um 15:02 Uhr
Super genau so wollte ich es haben @ didi

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

Habt Dank
Gruß
Tobi
Mitglied: 76109
10.03.2010 um 15:05 Uhr
Hallo Tobi!

Yepp, gern geschehen

Gruß Dieter

PS. Zeile 14 geändert von Spalte A nach SuchSpalte
Titel: Zeilen löschen, wenn diese bestimmte Kriterien nicht erfüllen
Content-ID: 137882
Art des Inhalts: Frage
Ausgedruckt am: 19.05.2019 um 10:27:19 Uhr
URL: https://administrator.de/contentid/137882