Office: (Office 2010) VBA: Aus einer Liste alle Zeilen löschen, die einen bestimmten Wert enthalten

Helfe beim Thema VBA: Aus einer Liste alle Zeilen löschen, die einen bestimmten Wert enthalten in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, Ich habe eine Tabelle, in verschiedene Daten stehen. In der Spalte G steht, ob eine Zeille Aktiv ist (1) oder nicht Aktiv ist (0).... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Luk_Lin, 18. Juli 2016.

  1. Luk_Lin Erfahrener User

    VBA: Aus einer Liste alle Zeilen löschen, die einen bestimmten Wert enthalten


    Hallo zusammen,

    Ich habe eine Tabelle, in verschiedene Daten stehen. In der Spalte G steht, ob eine Zeille Aktiv ist (1) oder nicht Aktiv ist (0).
    Es sollen alle inaktiven Zeilen komplett gelöscht werden.

    Mein Ansatz war folgender:

    Option Explicit

    Public Sub Leer_Weg()
    Application.ScreenUpdating = False
    Range("E:E").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    Application.ScreenUpdating = True
    End Sub​

    Ich habe in Spalte E die Abfrage gemacht: Wenn G=1, dann "1", Sonst "".
    Damit wollte ich alle leeren Zellen löschen. Leider sagt der mir, dass es keine leeren Zellen gibt.

    Jetzt sehe ich zwei verschiedene Möglichkeiten:
    1) weiß jemand, wie ich es hinbekommen kann, dass die Zellen wirklich leer sind?
    2) alternativ würde ich gerne alle Zellen der Spalte G markieren, die nicht den Wert "1" haben und dann die komplete Zeile auswählen und löschen.

    Kann mir da jemand helfen?

    Danke & Viele Grüße!
     
    Luk_Lin, 18. Juli 2016
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi,

    xlCellTypeBlanks bezieht sich auf LEERE Zellen, bei dir stehen aber Formeln in der Zelle - also sind sie nicht leer, auch wenn durch Verwendeung von "" nichts angezeigt wird.

    Benutze den Autofilter.

    Bis später,
    Karin
     
    Beverly, 18. Juli 2016
    #2
  3. Luk_Lin Erfahrener User
    Hallo Karin,

    vielen Dank für deine Antwort.

    Leider ist der Autofilter keine Option, da diese Aufgabe in regelmäßigen Abständen bei zu vielen Daten genutzt werden soll.

    Ist es dann nicht eventuell möglich vorher alle Werte die "" sind zu löschen oder anderweitig zu kennzeichnen?

    Es sollte doch aber möglich sein, alle Werte in der Spalte zu Selecten, die einen Wert X enthalten, oder?

    Danke und viele Grüße!
     
    Luk_Lin, 18. Juli 2016
    #3
  4. Beverly
    Beverly Erfahrener User

    VBA: Aus einer Liste alle Zeilen löschen, die einen bestimmten Wert enthalten

    Hi,


    Genau das lässt sich mit dem Autofilter lösen - mit SpecialCells(xlCellTypeVisible) lassen sich die so gefilterten Zeilen löschen.

    Bis später,
    Karin
     
    Beverly, 18. Juli 2016
    #4
  5. Luk_Lin Erfahrener User
    Perfekt, vielen Dank, so hat es geklappt.

    Für alle, die eventuell auch auf der Suche sind, hier mein verkürzter Code.


    Code:
    Sub Daten_löschen_Gesellschaft1()
    'Automatische Berechnung ausschalten und Bildschirmanzeige deaktivieren
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationManual
    
    'Arbeitsblatt "Sheet 1" auswählen
        Sheets("Sheet 1").Select
    
    'Die Tabelle filtern, in der die Daten eingesetzt wurden: Alle Werte anzeigen, die nicht aktiv sind
        Range("A:A:G:G").AutoFilter Field:=1, Criteria1:="Gesellschaft 1"
        
        Range("A1").Select
        Selection.End(xlDown).Select
        Gesellschaft = Selection.Value
    
    'Alle markierten Werte (=alle inaktiven Werte) löschen
        Range("A2:A10000").SpecialCells(xlCellTypeVisible).EntireRow.Delete
    
    'Filter wieder ausschalten
        Range("A:A:G:G").AutoFilter
    'Automatische Berechnung einschalten und Bildschirmanzeige aktivieren
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

    End Sub

    Vielen Dank nochmal für die Antworten!
    Viele Grüße
    Lukas
     
    Luk_Lin, 20. Juli 2016
    #5
  6. Beverly
    Beverly Erfahrener User
    Hi Lukas,

    ich würde es so lösen:

    Code:
    Sub Daten_loeschen_Gesellschaft1()
        Dim lngCalc As Long
        Dim lngLetzte As Long
        ' Berechnungsmodus auf Variable schreiben
        lngCalc = Application.Calculation
        ' Berechnung auf manuell
        Application.Calculation = xlManual
        Application.ScreenUpdating = False
        With Worksheets("Tabelle1")
            ' letzte belegte Zeile ermitteln
            lngLetzte = .Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
            ' falls Tabelle keinen Autofilter hat
            If .AutoFilter Is Nothing Then
                ' auf A1 und angrenzende Zellen Autofilter setzen
                .Range("A1").CurrentRegion.AutoFilter field:=1, Criteria1:="Gesellschaft 1"
                ' in Spalte A ab Zeile 2 bis letzte belegte zeile gibt es gefilterte Zellen, dann diese löschen
                If .Range(.Cells(1, 1), .Cells(lngLetzte, 1)).SpecialCells(xlCellTypeVisible) > 1 Then _
                    .Range(.Cells(2, 1), .Cells(lngLetzte, 1)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
                ' Autofilter löschen
                .Range("A1").CurrentRegion.AutoFilter
            End If
        End With
        ' Berechnungsmodus in Ausgangszustand setzen
        Application.Calculation = lngCalc
        Application.ScreenUpdating = True
    End Sub
    
    
    1. kann auf das Selektieren von Tabellenblättern und Zellen verzichtet werden
    2. sollte man den momentanen Berechnungsmodus auf eine Variable schreiben, um am Ende den tatsächlichen Ausgangszustand wiederherstellen zu können (falls vorher z.B. breits manuell würde er am Ende auf automatisch gestellt werden, was möglicherweise unerwünscht wäre)
    3. sollte man prüfen, ob bereits ein Autofilter gesetzt ist, andernfalls gibt es einen Fehler bzw. der vorhandene Filter wird entfernt
    4. sollte man prüfen, ob tatsächlich gefilterte Zellen vorhanden sind, denn falls nicht, gibt es einen Laufzeitfehler

    Bis später,
    Karin
     
    Beverly, 20. Juli 2016
    #6
Thema:

VBA: Aus einer Liste alle Zeilen löschen, die einen bestimmten Wert enthalten

Die Seite wird geladen...
  1. VBA: Aus einer Liste alle Zeilen löschen, die einen bestimmten Wert enthalten - Similar Threads - VBA Liste Zeilen

  2. Problem im Code für Mehrfachauswahl in Dropdownliste

    in Microsoft Excel Hilfe
    Problem im Code für Mehrfachauswahl in Dropdownliste: Hallo beisammen, ich soll für meinen Stiefvater eine Tabelle über seine Bestandskunden und deren Produkte erstellen und bin dabei nun auf folgendes Problem gestoßen: Ich brauche in mehreren...
  3. 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,...
  4. Excel VBA / Daten kopieren wenn Liste auf x steht.

    in Microsoft Excel Hilfe
    Excel VBA / Daten kopieren wenn Liste auf x steht.: Hallo zusammen, ich habe ein PowerQuery, welches ich ca. 2 mal im Monat aktualisiere. Aus dem Query möchte ich gerne die Daten per Makro in ein anderes Arbeitsblatt kopieren. Dabei möchte ich...
  5. Bestimmte Zellen aus geschlossenen Dateien in eine Master Liste hineinkopieren VBA

    in Microsoft Excel Hilfe
    Bestimmte Zellen aus geschlossenen Dateien in eine Master Liste hineinkopieren VBA: Hallo, ich bin an meiner Thesis dran und möchte Protokolle auswerten. Dazu habe ich Dateien, die Tageswerte enthalten. Ich möchte aus jeder Datei die gleichen Zellen kopieren und in eine...
  6. VBA dyn. Zellen kopieren und am ende der Liste einfügen

    in Microsoft Excel Hilfe
    VBA dyn. Zellen kopieren und am ende der Liste einfügen: Guten Morgen zusammen, ich hoffe ihr könnt mir helfen, da ich mich zwar mit Excel auskenne aber mit Makros nichts zu tun habe. Ich habe folgendes Problem: Ich möchte einen Zelleneinträge...
  7. VBA Zeile kopieren, wenn Zellenwert in Liste vorhanden..

    in Microsoft Excel Hilfe
    VBA Zeile kopieren, wenn Zellenwert in Liste vorhanden..: Hi Leutz, ich habe da mal wieder ein Problem und ich hoffe Ihr habt eine Lösung für mich. Habe zwar schon im Forum gestöbert, habe aber nichts entsprechendes gefunden (oder war mit Blindheit...
  8. Ganze Zeilen durch VBA in ein anderes Blatt kopieren, wenn eine Bedingung erfüllt ist

    in Microsoft Excel Hilfe
    Ganze Zeilen durch VBA in ein anderes Blatt kopieren, wenn eine Bedingung erfüllt ist: Hallo zusammen, Ich schilder dann erstmal mein Problem. Ich habe eine allgemeine Liste (Tabelle 2), bei der ganz viele Behälter aufgezählt sind (mehrere 100 Zeilen). die Tabelle 1 besteht...
  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