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

Forumthread: Bestimmte Spalten löschen

Bestimmte Spalten löschen
Chris
Hi zusammen,
ich möchte mittels einem Makro bestimmte Spalten einer Tabelle löschen. Und zwar sollen ab Spalte D alle Spalten gelöscht werden, die in der Überschrift einen Text stehen haben oder keine Überschrift haben.
Die Spaltenüberschriften befinden sich in Zeile 12.
Man könnte das auch anders ausdrücken: Ab Spalte D sollen alle Spalten, die in der Überschrift ein Datum stehen haben (MMM YY), erhalten bleiben.
Jemand einen guten Tipp?
Anzeige

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

Betreff
Benutzer
Anzeige
Spalten löschen, wenn in Zeile 12 kein Datum steht
12.11.2009 13:33:37
NoNet
Hallo chris,
vielleicht ein "guter Tipp" : Per Makro funktioniert das so :
Sub SpaltenOhneDatumInZeile12Loeschen()
Dim lngS As Long
For lngS = Columns.Count To 4 Step -1
If Not IsDate(Cells(12, lngS)) Then _
Columns(lngS).EntireColumn.Delete shift:=xlToLeft
Next
End Sub

Gruß, NoNet
Anzeige
AW: Bestimmte Spalten löschen
12.11.2009 13:35:08
Chris
Servus Namensvetter,
probier's mal so:
Sub t()
Dim lastcol As long, i As long
lastcol = Cells.Find(what:="*", Searchorder:=xlByColumns, Searchdirection:=xlPrevious).Column
For i = lastcol To 1 Step -1
If Not IsDate(Cells(12, i)) Then
Columns(i).Delete
End If
Next i
End Sub
Gruß
Chris
Anzeige
AW: Bestimmte Spalten löschen
12.11.2009 16:12:52
Chris
Was ich noch vergessen habe:
Ich möchte die Spalten nicht im aktivierten Sheet, sondern per Knopfdruck auf einen Commandbutton (der Code dahinter eledigt auch noch ein paar andere Sachen) in Tabelle1 die Spalten in Tabelle3, Tabelle4 und Tabelle5 löschen.
Wie ergänze ich den Code?
AW: Bestimmte Spalten löschen
15.11.2009 17:53:41
Daniel
HI
du könntest das so erweitern
Sub t()
Dim lastcol As long, i As long
Dim sh As Worksheet
For Each sh In Sheets(Array("Tabelle1", "Tabelle3", "Tabelle4", "Tabelle5"))
lastcol = sh.Cells.Find(what:="*", Searchorder:=xlByColumns, Searchdirection:=xlPrevious) _
.Column
For i = lastcol To 1 Step -1
If Not IsDate(sh.Cells(12, i)) Then
sh.Columns(i).Delete
End If
Next i
next
End Sub

Gruß, Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Spalten in Excel löschen


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Modul hinzufügen: Klicke im Menü auf Einfügen und wähle Modul.

  3. Code einfügen: Füge den folgenden VBA-Code in das Modul ein:

    Sub SpaltenOhneDatumInZeile12Loeschen()
        Dim lngS As Long
        For lngS = Columns.Count To 4 Step -1
            If Not IsDate(Cells(12, lngS)) Then _
            Columns(lngS).EntireColumn.Delete shift:=xlToLeft
        Next
    End Sub
  4. Makro anpassen: Wenn du die Spalten in mehreren Tabellen löschen möchtest, erweitere den Code wie folgt:

    Sub t()
        Dim lastcol As Long, i As Long
        Dim sh As Worksheet
        For Each sh In Sheets(Array("Tabelle1", "Tabelle3", "Tabelle4", "Tabelle5"))
            lastcol = sh.Cells.Find(what:="*", Searchorder:=xlByColumns, Searchdirection:=xlPrevious).Column
            For i = lastcol To 1 Step -1
                If Not IsDate(sh.Cells(12, i)) Then
                    sh.Columns(i).Delete
                End If
            Next i
        Next
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: "Komponente kann nicht gefunden werden": Stelle sicher, dass du das Makro in einer unterstützten Excel-Version erstellt hast.

  • Fehler: Spalten werden nicht gelöscht: Überprüfe, ob die Überschriften in Zeile 12 korrekt sind und ob die Daten in den Spalten tatsächlich im Datumsformat vorliegen.


Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die Filterfunktion in Excel nutzen:

  1. Filtere die Daten nach dem Datumsformat.
  2. Wähle die nicht benötigten Spalten aus.
  3. Klicke mit der rechten Maustaste und wähle Spalte löschen.

Diese Methode ist jedoch weniger automatisiert und kann bei großen Tabellen umständlicher sein.


Praktische Beispiele

  • Beispiel 1: Wenn in Zeile 12 der Text "01 Jan" steht, wird die Spalte nicht gelöscht, da es sich um ein Datum handelt.

  • Beispiel 2: Eine Spalte mit der Überschrift "Keine Daten" wird gelöscht, da kein gültiges Datum vorhanden ist.

Mit dem VBA-Code kannst du mehrere Spalten in einem Rutsch löschen, was besonders nützlich ist, wenn du viele Daten verwalten musst.


Tipps für Profis

  • Fehlersuche im VBA: Verwende Debug.Print, um Werte während der Ausführung zu überprüfen. So kannst du herausfinden, welche Spalten nicht wie erwartet verarbeitet werden.

  • Makros sichern: Speichere deine Excel-Datei als .xlsm, um sicherzustellen, dass deine Makros erhalten bleiben.

  • Verwendung von SQL: In manchen Fällen kann auch SQL zur Bearbeitung von Daten in Excel verwendet werden, vor allem wenn du mit großen Datenmengen arbeitest.


FAQ: Häufige Fragen

1. Kann ich das Makro für andere Zeilen verwenden?
Ja, du kannst die Zeilennummer in dem Code anpassen, um eine andere Zeile als Basis für die Überprüfung der Überschriften zu verwenden.

2. Was passiert, wenn ich versehentlich die falschen Spalten lösche?
In solchen Fällen kannst du die Funktion Rückgängig machen (CTRL + Z) verwenden, um die letzten Änderungen rückgängig zu machen. Achte darauf, vorher eine Sicherungskopie deiner Daten zu erstellen.

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