Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
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
Inhaltsverzeichnis

Mehrere Spalten löschen

Mehrere Spalten löschen
29.08.2017 08:49:48
Armin
Hallo,
ich habe folgende Frage.
Ich habe eine Tabelle mit mehreren hundert Spalten. Nun möchte ich bestimmte Spalten löschen, die in Zeile 1 ein bestimmtes Kennzeichen haben, z. B. das Kennzeichen "x".
Dies mache ich derzeit mir folgendem Code:
For i = 1000 To 1 Step -1
If ActiveSheet.Cells(1, i).Value = "x" Then
ActiveSheet.Columns(i).Delete Shift:=xlToLeft
End If
Next i

Dies funktioniert soweit gut, allerdings dauert dies relativ lange.
Gibt es nicht eine schnellere Methode zum Löschen der Spalten. Könnte man die betroffenen Spalten evtl. zu einem Array zusammenfassen und dann alle Spalten auf einmal löschen?
Ich freue mich auf eure Tipps.
LG Armin

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Spalten löschen
29.08.2017 08:54:39
ChrisL
Hi Armin
Probiere mal so...
Sub t()
Dim i As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If ActiveSheet.Cells(1, i).Value = "x" Then Columns(i).Delete Shift:=xlToLeft
Next i
Application.Calculation = xlCalculationAutomatic
End Sub

cu
Chris
AW: Mehrere Spalten löschen
29.08.2017 08:59:46
Armin
Hallo Chris,
danke für den Tipp.
Die Berechnung und den Bildschirmanzeige habe ich bereits deaktiviert.
Dein Beispielcode hat die gleiche lange Laufzeit wie mein Code.
Gibt es evtl. einen Ansatz, dass alle Spalten selektiert werden und der Löschbefehl dann nur 1x für alle Spalten ausgeführt wird.
Lieben Dank
Armin
Anzeige
AW: Mehrere Spalten löschen
29.08.2017 09:08:35
ChrisL
Hi Armin
Ja im Prinzip schon, aber ich kann mir eigentlich nicht vorstellen, warum ein paar hundert Spalten so lange dauern sollen. Ist da evtl. noch etwas anderes los, wovon wir nichts wissen? Vielleicht ein Change-Ereignis?
cu
Chris
AW: Mehrere Spalten löschen
29.08.2017 09:32:37
ChrisL
Hi Armin
Hier mal eine Variante:
Sub t()
Rows(1).Insert
With Range(Range("A1"), Cells(1, Cells(2, Columns.Count).End(xlToLeft).Column))
.Formula = "=IF(A2=""x"",""x"","""")"
.Value = .Value
.SpecialCells(xlCellTypeConstants).EntireColumn.Delete
End With
Rows(1).Delete
End Sub
cu
Chris
AW: Mehrere Spalten löschen
29.08.2017 10:22:48
Daniel
Hi
beim Löschen von Zeilen oder Spalten ist es immer sinnvoll, diese vor dem Löschen so zu sortieren, dass die zu löschenden Zellbereiche einen lückenlos zusammenhängenden Zellblock bilden.
Dann geht das Löschen am schnellsten.
hier mal die Idee von Chris diesbezüglich erweitert.

Sub SpaltenLöschen()
With ActiveSheet.UsedRange
With .Rows(.Rows.Count + 1)
.FormulaR1C1 = "=IF(R1C=""x"",1,"""")"
.Formula = .Value
If WorksheetFunction.Sum(.Cells) = 0 Then Exit Sub
End With
End With
With ActiveSheet.UsedRange
.Sort key1:=.Cells(.Rows.Count, 1), Header:=xlNo, Orientation:=2
.Cells.SpecialCells(xlCellTypeConstants, 1).EntireColumn.Delete
.Rows(1).Sort key1:=.Cells(1, 1), Orientation:=1
End With
End Sub
Gruß Daniel
Anzeige

90 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige