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

Forumthread: VBA Code Spalten (mit Namen) löschen

VBA Code Spalten (mit Namen) löschen
06.05.2021 00:15:01
Patrick
Guten Tag,
ich bekomme es alleine einfach nicht hin und frage daher hier um Hilfe.
Ich habe eine ExcelDatei mit ca. 150 Spalten. Die Spalten selbst haben ca 1000 Zeileneinträge. Ich würde gerne per Makro immer die gleichen Spalten löschen lassen. Dabei sollten die Spalten aber nicht nach deren Position, sondern nach deren Namen identifiziert und gelöscht werden, da sich die Reihenfolge und Spaltenanzahl immer wieder verändern wird.
Es geht dabei um eine Datei, die anonymisiert werden muss. Beispiele für Spaltennamen sind Name, Vorname, Telefonnummer, p_name_aus etc. Von den 150 Spalten müssen ca. 15 gelöscht werden.
Im besten Fall sollte nur deren Inhalt (alle Zeilen außer Nr. 1 mit dem Spaltennamen) gelöscht werden, damit man sieht, in welchen Spalten der Inhalt entfernt wurde, ansonsten ist aber auch eine Löschung der ganzen Spalte in Ordnung
Könnte mir damit jemand weiterhelfen?
Vielen dank schon mal im Voraus
Mfg
Patrick Frank
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code Spalten (mit Namen) löschen
06.05.2021 06:12:05
MCO
Hallo Patrick!
Das sollte funktionieren :-)

Sub spalten_löschen()
For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
If Cells(1, i) = "Name" Or Cells(1, i) = "Vorname" Or Cells(1, i) = "Tel" Then
Columns(i).Delete
End If
Next i
End Sub
Gruß, MCO
Anzeige
AW: VBA Code Spalten (mit Namen) löschen
06.05.2021 11:01:49
Patrick
Liebe MCO,
super, funktioniert wunderbar
Vielen Dank und noch einen schönen Tag
Patrick Frank
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Code zum Löschen von Spalten anhand der Namen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei: Stelle sicher, dass du die Datei mit den Spalten, die du löschen möchtest, geöffnet hast.

  2. Öffne den VBA-Editor: Drücke ALT + F11, um den Microsoft Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und wähle Modul.
  4. Füge den folgenden VBA-Code ein:

    Sub spalten_löschen()
       For i = ActiveSheet.UsedRange.Columns.Count To 1 Step -1
           If Cells(1, i) = "Name" Or Cells(1, i) = "Vorname" Or Cells(1, i) = "Tel" Then
               Columns(i).Delete
           End If
       Next i
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus:

    • Drücke ALT + F8, wähle spalten_löschen und klicke auf Ausführen.

Diese Schritte ermöglichen es dir, gezielt Spalten auf Basis ihrer Namen zu löschen, ohne die Position der Spalten zu berücksichtigen.


Häufige Fehler und Lösungen

  • Fehler: Spalten lassen sich nicht löschen
    Lösung: Überprüfe, ob die Spaltennamen in der ersten Zeile exakt mit den im Code angegebenen Namen übereinstimmen (z.B. "Name", "Vorname", "Tel").

  • Fehler: Makro wird nicht ausgeführt
    Lösung: Stelle sicher, dass du die Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter und aktiviere die Makros.


Alternative Methoden

  1. Excel Formeln: Du kannst auch eine Hilfsspalte erstellen, die die Namen der zu löschenden Spalten auflistet, und dann manuell die Werte der entsprechenden Spalten löschen.

  2. Filterfunktion: Verwende die Filterfunktion, um nur die gewünschten Daten anzuzeigen und dann die nicht benötigten Spalten zu löschen.

  3. Power Query: Mit Power Query kannst du Daten transformieren und unerwünschte Spalten ganz einfach entfernen.


Praktische Beispiele

  • Beispiel 1: Wenn du die Spalten "Name" und "Vorname" sowie "Tel" löschen möchtest, passe den Code wie folgt an:

    If Cells(1, i) = "Name" Or Cells(1, i) = "Vorname" Or Cells(1, i) = "Tel" Then
  • Beispiel 2: Möchtest du nur den Inhalt der Spalten löschen, statt sie komplett zu entfernen, kannst du den Code anpassen:

    Cells(2, i).Resize(ActiveSheet.UsedRange.Rows.Count - 1).ClearContents

Tipps für Profis

  • Verwende dynamische Bereiche: Anstatt die Anzahl der Spalten statisch zu definieren, kannst du ActiveSheet.UsedRange verwenden, um den aktiven Bereich dynamisch zu erfassen.

  • Sichere Daten vor dem Löschen: Erstelle immer ein Backup deiner Daten, bevor du Massenlöschungen durchführst, um versehentliche Datenverluste zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich den Code anpassen, um mehr Spalten zu löschen?
Ja, du kannst einfach weitere Bedingungen im If-Statement hinzufügen, um zusätzliche Spaltennamen zu berücksichtigen.

2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, einschließlich Excel 2010, 2013, 2016 und 2019.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige