Anzeige
Archiv - Navigation
1788to1792
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

    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

    322 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige