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

Spalten löschen nach Überschrift

Forumthread: Spalten löschen nach Überschrift

Spalten löschen nach Überschrift
04.03.2008 14:21:00
Nina
Hallo zusammen,
ich hoffe jemand kann mir bei folgendem Problem helfen:
Ich möchte per VBA alle Spalten einer Tabelle löschen, die nicht einer bestimmten Überschrift entsprechen. D.h., wenn ich in meiner Tabelle Spalten mit den Überschriften: Äpfel, Birnen, Bananen, Kiwis etc. habe, sollen alle Spalten gelöscht werden, die nicht die Überschrift Äpfel, Birnen oder Bananen haben.
Das Löschen bestimmter Spalten habe ich schon hinbekommen, dazu muss ich diese aber erst im Makro benennen (Z.B. Delete "Kiwis"), was ziemlich umständlich ist, da mehr Spalten gelöscht als beihalten werden sollen.
Vielen Dank für Eure Hilfe.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Spalten löschen nach Überschrift
04.03.2008 15:03:52
Michael
Hallo
Dein Problem ist mir etwas unverständlich.
WIe identifizierst Du denn die "guten" Überschriften?
SInd die in einer anderen Tabelle?
ciao
MIchael
P.S.
poste Deinen code

AW: Spalten löschen nach Überschrift
04.03.2008 15:27:48
Nina
Hallo MIchael,
die "guten" Überschriften sind immer gleich und bekannt. Momentan löscht mein Code die "schlechten" Spaltenüberschriften. Da es aber ungefähr 30 "schlechte" Überschriften gibt und nur 5 "gute", versuche ich nun seit geraumer Zeit erfolglos einen Code zu schreiben, in dem alle Spalten gelöscht werden, die nicht den angegeben "guten" Überschriften entsprechen.
Hier mein Code:

Sub Ueberflüssig()
Dim rngFind As Range, arSearch As Variant, i%
arSearch = Array("MANDT", "LFDNR", "KOSTL", "ARBPL", "WERKS", "DATUMK", "POSNR", "ZPRFD", " _
ZPRFZ")
'das sind Spaltenüberschriften, die ünerwünscht sind
For i = 0 To UBound(arSearch)
Set rngFind = Rows(1).Find(arSearch(i), LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
If Not rngFind Is Nothing Then rngFind.EntireColumn.Delete
Next
End Sub


Anzeige
AW: Spalten löschen nach Überschrift
04.03.2008 15:28:00
Nina
Hallo MIchael,
die "guten" Überschriften sind immer gleich und bekannt. Momentan löscht mein Code die "schlechten" Spaltenüberschriften. Da es aber ungefähr 30 "schlechte" Überschriften gibt und nur 5 "gute", versuche ich nun seit geraumer Zeit erfolglos einen Code zu schreiben, in dem alle Spalten gelöscht werden, die nicht den angegeben "guten" Überschriften entsprechen.
Hier mein Code:

Sub Ueberflüssig()
Dim rngFind As Range, arSearch As Variant, i%
arSearch = Array("MANDT", "LFDNR", "KOSTL", "ARBPL", "WERKS", "DATUMK", "POSNR", "ZPRFD", " _
ZPRFZ")
'das sind Spaltenüberschriften, die ünerwünscht sind
For i = 0 To UBound(arSearch)
Set rngFind = Rows(1).Find(arSearch(i), LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
If Not rngFind Is Nothing Then rngFind.EntireColumn.Delete
Next
End Sub


Anzeige
AW: Spalten löschen nach Überschrift
04.03.2008 15:56:00
Beate
Hallo Nina,
Sub spaltelöschen2()
    Dim spaltenzähler As Integer
    Dim Suchbegriff As String
    spaltenzähler = 1
    While Cells(1, spaltenzähler) <> ""
        Suchbegriff = Cells(1, spaltenzähler)
        If Suchbegriff <> "Äpfel" And Suchbegriff <> "Birnen" And Suchbegriff <> "Kiwis" And Suchbegriff <> "Bananen" Then
            Columns(spaltenzähler).Delete
            spaltenzähler = spaltenzähler - 1
        End If
        spaltenzähler = spaltenzähler + 1
    Wend
End Sub


Gruß,
Beate

Anzeige
AW: Spalten löschen nach Überschrift
04.03.2008 16:13:00
Nina
Meine Heldin! Klappt wie geschmiert.
Vielen Dank!
Nina
;
Anzeige
Anzeige

Infobox / Tutorial

Spalten löschen nach Überschrift in Excel


Schritt-für-Schritt-Anleitung

Um in Excel Spalten zu löschen, die nicht einer bestimmten Überschrift entsprechen, kannst Du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Sub SpaltenLoeschen()
       Dim spaltenzaehler As Integer
       spaltenzaehler = 1
    
       While Cells(1, spaltenzaehler) <> ""
           If Cells(1, spaltenzaehler) <> "Äpfel" And _
              Cells(1, spaltenzaehler) <> "Birnen" And _
              Cells(1, spaltenzaehler) <> "Kiwis" And _
              Cells(1, spaltenzaehler) <> "Bananen" Then
               Columns(spaltenzaehler).Delete
               spaltenzaehler = spaltenzaehler - 1
           End If
           spaltenzaehler = spaltenzaehler + 1
       Wend
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Drücke ALT + F8, wähle SpaltenLoeschen aus und klicke auf Ausführen.

Diese Methode entfernt alle Spalten, deren Überschrift nicht mit den angegebenen „guten“ Überschriften übereinstimmt.


Häufige Fehler und Lösungen

  • Fehler: Excel findet keine Spaltenüberschrift.

    • Lösung: Stelle sicher, dass die Überschriften in der ersten Zeile stehen und richtig geschrieben sind.
  • Fehler: Spalten werden nicht gelöscht.

    • Lösung: Überprüfe, ob der Code korrekt eingegeben wurde und die Named Ranges oder Formatierungen in der Tabelle nicht stören.

Alternative Methoden

Eine alternative Methode wäre, die Excel-Funktion „Filtern“ zu verwenden:

  1. Wähle die gesamte Tabelle aus.
  2. Gehe auf Daten > Filtern.
  3. Filtere nach den gewünschten Überschriften.
  4. Lösche die gefilterten Zeilen, die nicht den gewünschten Überschriften entsprechen.

Diese Methode ist besonders nützlich, wenn Du Excel ohne VBA verwenden möchtest und eine Excel-Tabelle ohne Überschrift erstellen möchtest.


Praktische Beispiele

Ein praktisches Beispiel für das Löschen von Spalten in einer Excel-Tabelle könnte so aussehen:

  1. Du hast eine Tabelle mit den Überschriften „Äpfel“, „Birnen“, „Kiwis“, „Bananen“, „MANDT“ usw.
  2. Du möchtest alle Spalten mit den Überschriften „MANDT“, „LFDNR“, „KOSTL“ usw. entfernen.
  3. Verwende den oben genannten VBA-Code, um nur die „guten“ Überschriften beizubehalten.

Tipps für Profis

  • Nutze die Möglichkeit, Excel-Zellen zu benennen, um Deinen Code flexibler zu gestalten. Du kannst die Namen der Überschriften in eine separate Liste einfügen und die Schleife dynamisch anpassen.
  • Wenn Du die Überschriften in einer anderen Tabelle hast, kannst Du diese Tabelle einlesen und vergleichen, um die Spalten zu löschen.

FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Tabelle ohne Überschrift erstellen?
Wenn Du eine Tabelle ohne Überschrift erstellen möchtest, kannst Du die erste Zeile einfach leer lassen oder eine Überschrift entfernen.

2. Was passiert, wenn ich die falsche Spalte lösche?
Wenn Du versehentlich eine falsche Spalte gelöscht hast, kannst Du die Aktion mit STRG + Z rückgängig machen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige