Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nur Bestimmte Zellen löschen

Nur Bestimmte Zellen löschen
27.10.2020 11:51:51
AliBaba
Hallo VBA Freunde,
ich habe ein Problem mit dem Löschen bestimmte Zellen einer Tabelle (Zellen von Spalte L bis R), wenn im Zelle von Spalte M den Wert Null hat.
Mein Vorgehen ist wie folgt:
1. ich kopiere die Spalten C:I
2. Dann füge ich sie ganz normal in Spalte L:R (damit ich die Formate der Zellen übernehme)
3. Danach füge ich die kopierte Zellen nochmals in Spalten L:R aber jetzt nur die Werte
4. Nachdem die Spalten eingefügt sind, sortiere ich die Spalten nach der Reihe nach Zeitart (Spalte L) Datum (Spalte R) und zur Letzt Werker Saplte P).
Problem:
5. Soll in dieser List von R:R nur die Zellen gelöscht werden, die im Spalte M einen Wert von Null haben.
6. Wenn möglich dann sollen nur die vollen Zellen, ohne die gelöschten Zellen wie oben sortiert werden. (Wenn durch Löschen der Zellen leere Zellen angezeigt werden)
Hier Mein Code:
  • 
    Sub ZeitartenSortieren()
    ' ZeitartenSortieren Makro
    ' Hier wird nach Zeitarten, Datum und Werker sortiert für die Zusammenstellungbogen. At, 27.10.  _
    _
    2020
    Columns("C:I").Select
    Selection.Copy
    Columns("L:L").Select
    ActiveSheet.Paste               ' Hier normales Einfügen mit Formate und Formeln usw.
    Columns("L:L").Select           ' Hier nur Werte einfügen ohne Formeln und Formate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    With Columns("L:R")
    .Sort Key1:=Range("L1"), Key2:=Range("R1") _
    , Key3:=Range("P1"), Header:=xlYes
    ' Wenn mehr als drei Sortierkriterien nötig ist:
    '     .Sort Key1:=Range("J1"), Key1:=Range("K1") _
    '          , Key3:=Range("L1"), Header:=xlYes
    End With
    '     Ab hier würde ich gerne die Zellen L bis R löschen (nicht die komplette Zeile) , wenn  _
    _
    die Werte im Spalte M Null ist  !!!
    '               Nice to Have ist, nachdem die gelöschten Zellen von L bis R die Zeile nach   _
    _
    oben verschoben.
    '               Aber wenn es zu schwer ist kann ich auch neu wie oben sortieren.
    '               Wie geht es ?
    End Sub
    

  • Ich danke für Eure Hilfe
    LG
    AliBaba
    Anzeige

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Nur Bestimmte Zellen löschen
    27.10.2020 12:41:55
    Daniel
    Hi
    vorausgesetzt, dass in der Spalte M nur Zahlen oder Texte stehen können, geht's so:
    ersetze in Spalte M die 0 durch einen Wahrheitswert
    markiere die die Spalte M und schränke die Auswahl auf die Wahrheitswerte ein (Inhalte - auswählen)
    erweitere diese Zellenn auf "ganze Zeile", bilde die Schnittmenge mit den gewünschten Spalten und lösche.
    sieht als Code so aus:
    With Columns(13)
    If Worksheetfunction.Countif(.Cells, 0) > 0 Then
    .replace 0, True, xlwhole
    Intersect(.SpecialCells(xlcelltypeconstants, 4).EntireRow, Range("L:R")).Delete Shift:= _
    xlup
    end if
    end with
    
    wenn die Datenmenge sehr groß ist, dann solltest du Spalte M als Hauptkriterium ins Sortieren mit aufnehmen.
    Dann stehen alle Zeilen, die gelöscht werden sollen als geschlossener Block direkt untereinander und das beschleunigt das Löschen von Zeilen erheblich
    (Range("1:1000").delete dauert genauso lang die Range("1:1").delete, aber Range("1:1,3:3").delete dauert doppelt so lange).
    Gruß Daniel
    Anzeige
    AW: Nur Bestimmte Zellen löschen
    27.10.2020 13:14:35
    AliBaba
    Hallo Daniel,
    ich danke Dir für die schnelle und erfolgreiche Antwort. Es hat auf Anhieb funktioniert.
    Ich habe für dich eine simple Fragen:
    Bei dem "With Columns(13)" was bedeutet und welchen Funktion hat die Nummer 13 in der Klammer?
    Danke!
    LG
    AliBaba
    AW: Nur Bestimmte Zellen löschen
    27.10.2020 13:23:18
    Daniel
    Hi
    Da "Columns" übersetzt "Spalten" heißt, steht die 13 hier für die 13. Spalte.
    in VBA kann in den Funktionen Columns und Cells auch anstelle des Spaltenbuchstabens auch die Spaltennummer angeben, was für die Programmierung oft einfacher ist, zumindest dann wenn die Werte noch irgendie berechnet werden.
    du kannst statt Columns(13) auch Columns("M:M") oder Range("M:M") schreiben, dein VBA versteht das auch.
    Gruß Daniel
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Bestimmte Zellen in Excel löschen


    Schritt-für-Schritt-Anleitung

    Um in Excel bestimmte Zellen zu löschen, insbesondere wenn sie einen bestimmten Inhalt haben, kannst du den folgenden VBA-Code verwenden. In diesem Beispiel wird gezeigt, wie du Zellen aus den Spalten L bis R löschen kannst, wenn in der Spalte M der Wert Null steht.

    1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

    2. Füge ein neues Modul ein: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

    3. Kopiere und füge den folgenden Code ein:

      Sub BestimmteZellenLoeschen()
         With Columns(13) ' Spalte M
             If WorksheetFunction.CountIf(.Cells, 0) > 0 Then
                 .Replace 0, True, xlWhole
                 Intersect(.SpecialCells(xlCellTypeConstants, 4).EntireRow, Range("L:R")).Delete Shift:=xlUp
             End If
         End With
      End Sub
    4. Schliesse den VBA-Editor und kehre zu Excel zurück.

    5. Führe das Makro aus: ALT + F8, wähle "BestimmteZellenLoeschen" und klicke auf "Ausführen".


    Häufige Fehler und Lösungen

    • Excel-Zellen löschen nicht möglich: Wenn die Option zum Löschen von Zellen ausgegraut ist, stelle sicher, dass die Zellen nicht geschützt sind. Du kannst den Blattschutz aufheben, indem du auf "Überprüfen" > "Blattschutz aufheben" klickst.

    • Zeilen löschen nicht möglich: Wenn du versuchst, ganze Zeilen zu löschen und es nicht funktioniert, überprüfe, ob eine Filterfunktion aktiv ist oder ob die Zeilen in einem geschützten Bereich liegen.


    Alternative Methoden

    Wenn du keine VBA verwenden möchtest, kannst du auch die Funktion "Suchen und Ersetzen" nutzen, um bestimmte Werte zu löschen:

    1. Markiere den Bereich, in dem du die Werte löschen möchtest.
    2. Drücke STRG + F, um das Suchfenster zu öffnen.
    3. Klicke auf "Ersetzen".
    4. Gib in das Feld "Suchen nach" den Wert ein, den du löschen möchtest (z. B. 0).
    5. Lass das Feld "Ersetzen durch" leer und klicke auf "Alle ersetzen".

    Dies entfernt alle Vorkommen des Wertes in deinem ausgewählten Bereich.


    Praktische Beispiele

    • Beispiel 1: Um alle leeren Zellen in einem bestimmten Bereich zu löschen, kannst du den folgenden Code verwenden:

      Sub LeereZellenLoeschen()
         Dim rng As Range
         Set rng = Range("L:R") ' Definiere den Bereich
         rng.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
      End Sub
    • Beispiel 2: Um nur Zellen mit bestimmten Inhalten zu löschen, kannst du den gleichen Ansatz wie oben verwenden, aber die Bedingung anpassen, um nach spezifischen Werten zu suchen.


    Tipps für Profis

    • Makro für häufige Aufgaben: Wenn du oft bestimmte Zellen in Excel löschen musst, speichere den VBA-Code als Makro und weise ihm eine Tastenkombination zu, um Zeit zu sparen.

    • Verwendung von Filter: Filtere deine Daten zuerst, um nur die relevanten Zeilen anzuzeigen, bevor du Zellen oder Zeilen löschst. Dies kann die Übersichtlichkeit verbessern.

    • Backup erstellen: Bevor du Massenlöschungen durchführst, erstelle immer eine Sicherungskopie deiner Datei. Das kann dir helfen, ungewollte Verluste zu vermeiden.


    FAQ: Häufige Fragen

    1. Was bedeutet "With Columns(13)" im VBA-Code? Die Zahl 13 steht für die 13. Spalte, also Spalte M. Du kannst auch "Columns("M:M")" verwenden, um dieselbe Spalte zu referenzieren.

    2. Wie kann ich sicherstellen, dass Excel mehrere Zeilen löschen kann? Wenn du mehrere Zeilen löschen möchtest, stelle sicher, dass deine Daten gut organisiert sind und keine Filter aktiv sind, die das Löschen verhindern könnten.

    3. Warum kann ich einige Zellen nicht löschen? Das Löschen von Zellen kann nicht möglich sein, wenn das Arbeitsblatt geschützt ist oder wenn die Zellen Teil eines bestimmten Datenbereichs sind, der nicht bearbeitet werden kann. Überprüfe den Blattschutz oder die Definition der Tabelle.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige