Lösche leere Spalten in einer csv

Als leere Spalte gilt in unserem Fall eine Spalte mit Überschrift aber sonst leeren Zellen.

Sub DeleteEmptyColumns()
    Dim ws As Worksheet
    Dim LastRow As Long
    Dim LastColumn As Long
    Dim ColumnIndex As Integer
    Dim RowIndex As Integer
    Dim IsColumnEmpty As Boolean
    
    ' Setze das aktive Arbeitsblatt
    Set ws = ActiveSheet
    
    ' Ermittle die letzte Spalte und die letzte Zeile
    LastColumn = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
    LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' Gehe von der letzten Spalte rückwärts durch alle Spalten
    For ColumnIndex = LastColumn To 1 Step -1
        IsColumnEmpty = True ' Gehe davon aus, dass die Spalte leer ist, bis das Gegenteil bewiesen wird
        ' Überprüfe jede Zelle in der Spalte (außer der Überschrift)
        For RowIndex = 2 To LastRow
            If Trim(ws.Cells(RowIndex, ColumnIndex).Value) <> "" Then
                IsColumnEmpty = False
                Exit For
            End If
        Next RowIndex
        
        ' Wenn die gesamte Spalte (außer der Überschrift) leer ist, lösche sie
        If IsColumnEmpty Then
            ws.Columns(ColumnIndex).EntireColumn.Delete
        End If
    Next ColumnIndex
End Sub
  • Öffne die csv mit Excel
  • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  • Wähle im Menü Einfügen > Modul, um ein neues Modul zu erstellen.
  • Kopiere den oben gegebenen VBA-Code und füge ihn in das Modul ein.
  • Schließe den VBA-Editor und kehre zu Excel zurück.
  • Drücke ALT + F8, wähle DeleteEmptyColumns und klicke auf Ausführen.
  • Speichere die csv

Cave: Den VBA-Code hat ChatGPT erstellt und ich habe nur stichprobenartig überprüft, dass nicht zu viele Spalten gelöscht wurden.