Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
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

Spalten löschen mit Bedingung

Spalten löschen mit Bedingung
25.03.2021 16:35:41
Elmar
Hallo Experten,
ich suche nach einen einfach VBA-Code, der schlicht schaut, ob in einer Tabelle ab der Spalte "E" bis zur 40ten Spalte in der Zeile 1 eine 1 oder eine 0 steht. Wenn in Zeile 1 dann eben in Spalte E, F, G usw. eine 0 steht, sollen diese Spalten alle gelöscht werden.
Hab das Beispiel schon gefunden, aber es löscht die Spalten dann leider nicht, in denen eine 0 steht in Zeile 1.
With ThisWorkbook.Worksheets("Seite1_1")
For i = 5 To 40
If .Cells(1, i) = "0" Then
.Columns(i).Delete
End If
Next i
End With
Hat jemand eine Idee, wie ich das lösen könnte?
VG aus Bayern
Elmar

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten löschen mit Bedingung
25.03.2021 16:40:32
ChrisL
Hi Elmar
Sub t()
Dim i As Integer
With ThisWorkbook.Worksheets("Seite1_1")
For i = 40 To 5 Step -1
If .Cells(1, i) = 0 Then .Columns(i).Delete
Next i
End With
End Sub

cu
Chris

AW: Spalten löschen mit Bedingung
25.03.2021 16:48:30
Daniel
Hi
Zahlen sind was anderes als Texte, auch wenn es manchmal gleich aussieht.
Dh, probiers mal mit If .Cells(1, i) = 0 Then oder mit If .Cells(1, i).Text = "0" Then
Noch ein Tipp:
Beim Löschen von Zeilen oder Spalten muss die Schleife rückwärts laufen
For i = 40 to 5 step -1
Anderenfalls müsstest du aufgrund des Nachrückens einer Spalte nach einem.Löschvorgang dieselbe Spaltennummer nochmal prüfen, ansonsten übersppringst du die nächste Spalte.
Gruß Daniel

Anzeige
oder alle Spalten erst...
25.03.2021 17:09:37
Werner
Hallo,
...sammeln und dann in einem Rutsch löschen. Dann muß die Schleife auch nicht von hinten nach vorne laufen.
  • 
    Public Sub aaa()
    Dim i As Long, raDelete As Range
    With Worksheets("Tabelle1")
    For i = 5 To 40
    If .Cells(1, i) = 0 Then
    If raDelete Is Nothing Then
    Set raDelete = .Cells(1, i)
    Else
    Set raDelete = Union(raDelete, .Cells(1, i))
    End If
    End If
    Next i
    If Not raDelete Is Nothing Then raDelete.EntireColumn.Delete
    End With
    Set raDelete = Nothing
    End Sub
    

  • Gruß Werner

    AW: Spalten löschen mit Bedingung
    25.03.2021 17:31:22
    Elmar
    Hallo zusammen,
    ganz klasse Unterstützung, alles funktioniert, hab nun die Version von Werner gewählt und die läuft auch super schnell.
    Danke nochmal an alle und Grüße
    Elmar

    Anzeige
    Gerne u. Danke für die Rückmeldung. o.w.T.
    25.03.2021 17:49:51
    Werner

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige