Office: (Office 2010) VBA - Zeile löschen bei mehreren IF-And Bedingungen

Helfe beim Thema VBA - Zeile löschen bei mehreren IF-And Bedingungen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Ausgangstabelle (Excel 2010) [ATTACH] Ich möchte komplette Zeilen löschen wenn in einem bestimmten Bereich gleichzeitig das Wort "off" steht. In... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von bure2016, 29. Dezember 2016.

  1. bure2016 Neuer User

    VBA - Zeile löschen bei mehreren IF-And Bedingungen


    Ausgangstabelle (Excel 2010)

    VBA - Zeile löschen bei mehreren IF-And Bedingungen wenndannsonst.JPG

    Ich möchte komplette Zeilen löschen wenn in einem bestimmten Bereich gleichzeitig das Wort "off" steht. In diesem Beispiel:

    Wenn in Spalte C egal welche Zeile und in Spalte D egal welche Zeile und in Spalte E egal welche Zeile das Wort "off" steht, soll die gesamte Zeile gelöscht werden.

    Meine VBA-Versuche scheitern kläglich. Letzter Code, bei dem nichts passiert:

    Code:
    Sub Zeile_Loeschen() 'fast richtig
    
        Dim Bereich As Range, zelle As Range
        Application.ScreenUpdating = False
        Set Bereich = Range("A1:F10")
        For Each zelle In Bereich
            If Range("c2") = "off" And Range("d2") = "off" And Range("e2")  = "off" Then
                zelle.EntireRow.Delete Shift:=xlUp
            End If
        Next
        Application.ScreenUpdating = True
    End Sub
    Ich vermute, es liegt an der komplett falschen Definition des Suchbereiches. Komme aber einfach nicht weiter. Hilfe!
     
    Zuletzt bearbeitet: 29. Dezember 2016
    bure2016, 29. Dezember 2016
    #1
  2. BoskoBiati Erfahrener User
    Hallo,

    mit "fast richtig" liegst Du mal völlig daneben!

    Code:
    Sub löschen()
    Dim loA as long
    For loA=10 to 1 step -1
    if cells(loa,3)="off" and cells(loA,4)="off" then rows(loa).delete shift:=xlup
    next
    End sub
    ungetestet!
     
    BoskoBiati, 30. Dezember 2016
    #2
  3. Beverly
    Beverly Erfahrener User
    Hi,


    Damit liegst du vollkommen richtig, da du ja im Bereich A1:F10 alle Zellen durchläufst, aber eigentlich nur jeder Zeile einmalig durchlaufen willst. Außerdem prüfst du bei jedem Schleifendurchlauf die Zellen C2, D2 und E2, wogegen du ja jede Zeile prüfen musst. So wird ein Schuh daraus:

    Code:
        Set Bereich = Range("A1:A10")
        For Each zelle In Bereich
            If zelle.Offset(0, 2) = "off" And zelle.Offset(0, 3) = "off" And zelle.Offset(0, 4) = "off" Then
                zelle.EntireRow.Delete Shift:=xlUp
            End If
        Next
    
    
    Bis später,
    Karin
     
  4. lupo1
    lupo1 Tutorial Guru

    VBA - Zeile löschen bei mehreren IF-And Bedingungen

    Bei mehr als 1000 Datensätzen ist deren Einzellöschung extrem langsam, vorwärts noch langsamer als rückwärts. Daher folgendes in VBA nachprogrammieren:

    Neue Spalte G:
    G2: {=UND(C2:E2="Off")} oder =ZÄHLENWENN(C2:E2;"Off")=3 runterkopieren
    G nach FALSCH autofiltern
    Autofiltrat ohne G in neues Blatt kopieren
    Kompletten neuen Blattinhalt über Ausgangsblatt kopieren
    Neues Blatt entsorgen

    Das Makro dürfte dann bei 1000 Sätzen 1 Größenordnung, bei 3000 Sätzen 2 Größenordnungen schneller sein.

    Eine ähnlich gleich schnelle Möglichkeit ist die Kopie und Rückeinfügung der Tabelle in und über VBA-Variants.
     
    Zuletzt bearbeitet: 30. Dezember 2016
  5. bure2016 Neuer User
    BoskoBiati: funktioniert. Einwandfrei. Tausend Dank.
    Beverly: Da passiert leider überhaupt nichts. Es rührt sich gar nichts. Dennoch danke für den Versuch.
    Lupo1: Mehr als 1.000 Datensätze wird es nicht werden, aber danke für den Hinweis.
     
    Zuletzt bearbeitet: 30. Dezember 2016
    bure2016, 30. Dezember 2016
    #5
  6. Beverly
    Beverly Erfahrener User

    Dann machst du etwas falsch. Schau dir die angehängte Mappe an - in Tabelle "Ausgang" siehst du die Startsituation (in Zeile 2 und 10 steht jeweils in Spalte C, D und E der Begriff "off") und in Tabelle "Ergebnis" siehst du die Situation nach Ausführung des Makros: es fehlen Zeile 2 und Zeile 10, also genau die welche der Code löschen soll.


    Nimm dann mal den Code aus Beitrag 2 und lasse dabei in einer Zeile Spalte E leer - diese Zeile wird gelöscht, obwohl sie nicht gelöscht werden darf, da die Bedingung ja ist, dass auch in E "off" stehen muss.

    Bis später,
    Karin
     
  7. BoskoBiati Erfahrener User
    Hallo Karin,

    schön das Du das erwähnst! Da habe ich doch glatt diese Bedingung vergessen:

    Code:
    Sub löschen()
    Dim loA as long
    For loA=10 to 1 step -1
    if cells(loa,3)="off" and cells(loA,4)="off" and cells(loA,5)="off" then rows(loa).delete shift:=xlup
    next
    End sub
    Code:
    Sub löschen()
    Dim loA as long
    For loA=10 to 1 step -1
    if application.countif(Range(cells(loa,3),cells(loa,5)),"off")=3 then rows(loa).delete shift:=xlup
    next
    End sub
     
    BoskoBiati, 30. Dezember 2016
    #7
Thema:

VBA - Zeile löschen bei mehreren IF-And Bedingungen

Die Seite wird geladen...
  1. VBA - Zeile löschen bei mehreren IF-And Bedingungen - Similar Threads - VBA Zeile löschen

  2. VBA / Leerzeile mit Checkbox löschen

    in Microsoft Excel Hilfe
    VBA / Leerzeile mit Checkbox löschen: Hallo Möchte gerne in einer Excel-Datei Leerzeilen, welche eine aktiviert Checkbox enthalten per VBA löschen. (Checkbox in der zu löschenden Zeile, sowie allfällig andere, deaktivierte Checkboxen...
  3. VBA Code gesucht für Zeilen löschen anhand von Kriterien

    in Microsoft Excel Hilfe
    VBA Code gesucht für Zeilen löschen anhand von Kriterien: Guten Tag Ich habe eine Exceldatei mit mehreren Tabellen. Auf einer Tabelle habe ich eine ziemlich grosse Liste von Einträgen, die mit einem bestimmten Schlüssel versehen sind (pro Tag mehrere...
  4. per VBA Zeile in der Liste löschen

    in Microsoft Excel Hilfe
    per VBA Zeile in der Liste löschen: Hallo Leute, ich brauche eure Hilfe. In einer Liste sollen regelmäßig Einträge vorgenommen werden. Hierzu müssen die Felder Name, Nr. alt, Stück, Bezeichnung, Datum, Kst, Palettennummer,...
  5. VBA programmieren

    in Microsoft Excel Hilfe
    VBA programmieren: Hallo Leute, Bisher hatte ich meine Probleme immer mit dem mitlesen lösen können. Nun ist es soweit und ich brauche eure Hilfe. Ich habe ein Tabellenblatt, nennen wir es mal "Palettenliste", mit...
  6. VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen

    in Microsoft Excel Hilfe
    VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen: Hallo liebe Excel-Kommunity, nach ewigen Stunden des Suchens und Rumprobierens bin ich an dem Punkt angekommen an dem ich verzweifelt um eure Hilfe fragen muss. Da ich leider keinerlei...
  7. Excel mit VBA ganze Zeile nach einem Wert in Zelle löschen

    in Microsoft Excel Hilfe
    Excel mit VBA ganze Zeile nach einem Wert in Zelle löschen: Hallo zusammen Mein Kopf ist kurz vorm Explodieren. Hoffe auf eure Hilfe: Ich versuche mit einem Makro anhand des Wertes der in Zelle G1 steht, alle Zeilen mit diesem Wert in der Tabelle zu...
  8. Makro Problem nach Wörtern filtern und Zeilen löschen

    in Microsoft Excel Hilfe
    Makro Problem nach Wörtern filtern und Zeilen löschen: Hallo zusammen! Ich habe ein Makro, dass ich erweitern möchte. Dabei soll in den Daten in der ersten Zeile ein Filter aktiviert werden und alle Datenzeilen löschen, die in Spalte 10 eines von 4...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden