Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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
wenn alle Zellen in Auswahl leer sind dann Spalte löschen
23.08.2023 15:24:40
Tossli
Hallo zusammen

Ich habe eine Tabelle, bei welcher nicht immer alle Spalten ausgefüllt werden.
Nun möchte ich mit einer Schleife jeweils die Zeilen unterhalb überprüfen und wenn alle leer sind dann die komplette Spalte löschen.

bis anhin habe ich folgenden Code:

Sub test()


LastColumn = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count
FirstRow = 5
StepRows = LastRow - FirstRow + 1

For i = LastColumn To 1 Step -1
For j = LastRow To FirstRow Step -StepRows
Range(Cells(j, i), Cells(FirstRow, i)).Select
Next j
Next i

End Sub


Ich programmiere noch nicht lange und stehe momentan auf dem Schlauch. Wie kann ich eine Auswahl überprüfen, ob alle Zellen leer sind?

Vielen dank im Voraus. :)
Gruss Tossli

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn alle Zellen in Auswahl leer sind dann Spalte löschen
23.08.2023 15:44:36
Rudi Maintaire
Hallo,
Sub test()

Dim LastColumn As Long, LastRow As Long

Const FirstRow = 5

LastColumn = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count + FirstRow

For i = LastColumn To 1 Step -1
If Application.CountA(Range(Cells(FirstRow, i), Cells(LastRow, i))) = 0 Then
Columns(i).Delete
End If
Next i

End Sub

Gruß
Rudi
AW: wenn alle Zellen in Auswahl leer sind dann Spalte löschen
23.08.2023 17:21:36
daniel
Hi
hier eine andere Möglichkeit, diese Aufgabe zu bewältigen.
das brauchte keine Variablen und keine Schleifen, was die Integration in größere Makros und das Testen im Einzelstep einfacher macht.
Sub test()

With ActiveSheet.UsedRange
With .Rows(.Rows.Count + 1)
.FormulaR1C1 = "=IF(CountA(R5C:R[-1]C)=0,1,"""")"
If WorksheetFunction.Sum(.Cells) > 1 Then .SpecialCells(xlCellTypeFormulas, 1).EntireColumn.Delete
.ClearContents
End With
End With
End Sub


Gruß Daniel
Anzeige
AW: wenn alle Zellen in Auswahl leer sind dann Spalte löschen
24.08.2023 08:22:45
Tossli
Hallo Daniel

Vielen Dank für deine Antwort.
Ich habe gestern noch einen Code erstellt, welcher funktioniert.

Sub leere_Spalten_loeschen()

Dim bEmpty As Boolean

LastColumn = ActiveSheet.UsedRange.Columns.Count
LastRow = ActiveSheet.UsedRange.Rows.Count

For i = 1 To LastColumn
bEmpty = True
For j = 4 To LastRow
Cells(j, i).Select
If Cells(j, i) > "" Then
bEmpty = False
Exit For
End If
Next j
If bEmpty Then
Cells(1, i).EntireColumn.Delete
i = i - 1
LastColumn = LastColumn - 1
If i >= LastColumn Then Exit For
End If
Next i

End Sub


Werde deinen heute aber sicher auch noch probieren, da er wesentlich kürzer ist ;P

Anzeige
AW: wenn alle Zellen in Auswahl leer sind dann Spalte löschen
24.08.2023 10:38:37
daniel
so würde man das machen, wenn man kein Excel hätte und das ganze mehr oder weniger vollständig programmieren müsste.
da man aber Excel hat, kann man auch die Excelfunktionen nutzen, um die Programmierung einfacher, kürzer und in vielen Fällen auch schneller zu machen.
Gruß Daniel

346 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Anzeige

Infobox zum Thema

EXCEL - Wenn alle Zellen in Auswahl leer sind, dann Spalte löschen


Inhaltsverzeichnis


Die Fragestellung


Du möchtest mit VBA eine Spalte in Excel löschen, wenn alle Zellen in einer bestimmten Auswahl leer sind.


Erläuterung des Problems {#erläuterung-des-problems}


In großen Datensätzen kann es vorkommen, dass einige Spalten keine Daten enthalten. Um die Übersichtlichkeit zu verbessern und die Dateigröße zu reduzieren, kann es sinnvoll sein, solche leeren Spalten zu entfernen.


Lösung des Problems {#lösung-des-problems}


Du kannst folgenden VBA-Code verwenden, um zu überprüfen, ob alle Zellen in einer Spalte leer sind, und die Spalte gegebenenfalls zu löschen:

Sub DeleteColumnIfEmpty()
    Dim rng As Range
    Dim cell As Range
    Dim isEmpty As Boolean
    isEmpty = True

    ' Bereich festlegen, der überprüft werden soll (hier als Beispiel Spalte A)
    Set rng = ThisWorkbook.Sheets("Tabelle1").Range("A:A") ' Anpassen an den tatsächlichen Bereich

    ' Überprüfen, ob alle Zellen im Bereich leer sind
    For Each cell In rng
        If Not IsEmpty(cell.Value) Then
            isEmpty = False
            Exit For
        End If
    Next cell

    ' Wenn der Bereich leer ist, die ganze Spalte löschen
    If isEmpty Then
        rng.EntireColumn.Delete
    End If
End Sub

Dieses Makro durchläuft alle Zellen in der definierten Spalte und prüft, ob sie leer sind. Wenn keine Daten gefunden werden, wird die gesamte Spalte gelöscht.


Anwendungsbeispiele aus der Praxis


  • Datenbereinigung: Entfernen von leeren Spalten aus einem Datensatz, um die Dateigröße zu verringern und die Übersicht zu verbessern.
  • Vorbereitung für die Analyse: Automatisches Löschen von irrelevanten Spalten vor der Durchführung von Datenanalysen.

Tipps


  • Überprüfe, ob der Bereich, den du löschen möchtest, nicht Teil einer Tabelle oder eines Bereichs ist, der von anderen Funktionen oder Formeln verwendet wird.
  • Füge eine Bestätigung hinzu, bevor du Spalten löschst, um versehentliches Löschen zu vermeiden.

Verwandte Themenbereiche


  • VBA-Programmierung in Excel
  • Automatisierung von Datenbereinigungsprozessen
  • Excel-Datenmanagement

Zusammenfassung


Mit dem bereitgestellten VBA-Code kannst du schnell und einfach überprüfen, ob eine Spalte in Excel leer ist, und diese bei Bedarf löschen. Dies ist besonders nützlich, um Datensätze zu bereinigen und die Effizienz der Datenverarbeitung zu verbessern. Indem du diesen Code in deine VBA-Projekte integrierst, kannst du die Datenbereinigung automatisieren und Zeit sparen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige