Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
500to504
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
500to504
500to504
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Spalten löschen

Spalten löschen
20.10.2004 09:49:39
Harald
Guten Morgen Forum,
ich habe versucht einen Code der mit Wenn-Bedingung Zeilen löscht, das Spaltenlöschen beizubringen. Sollzustand: Für Spalten A bis DC, wenn nicht VIN oder T_J irgendwas in der Kopfzeile steht, soll die Spalte gelöscht werden.
Hier der Code, der leider die Fehlermeldung "Typen unverträglich" bringt.

Sub wegdamit()
Dim c As Long, cz As Long
cz = Range("DC1").End(xlToRight).Column
For c = 1 To cz
If Cells(1, c).Value <> "VIN" Or "T_J*" Then
Cells(1, c).EntireColumn.Delete
End If
Next c
End Sub

Wie gesagt...für das Zeilen löschen funzt er.
Sobald ihr dann die Lachtränenn weggewischt habt, könnt ihr mir ja vielleicht den Fehler sagen.
;-))
Gruß
Harry

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten löschen
Reinhard
Hi Harry,
probiers mal so:

Sub wegdamit()
Dim c As Long, cz As Long
cz = Range("DC1").End(xlToRight).Column
For c = 1 To cz
If Cells(1, c).Value <> "VIN" And left(Cells(1, c),3) <> "T_J" Then
Cells(1, c).EntireColumn.Delete
End If
Next c
End Sub

Gruß
Reinhard
AW: Spalten löschen
20.10.2004 10:17:39
Harald
Hallo Reinhard,
zumindest bringt er keine Fehlermeldung.
Hab das 'and wieder gegen 'or getauscht (er soll ja beide Bedingungen stehen lassen)
Das Tabellenblatt hat ne halbe Minute geblinkert aber es waren längst nicht alle "unnötigen" Spalten gelöscht.
Ich fürchte für jede Spalte die er löscht, kommt ja eine neue Spalte AS.
Kann man eine dritte Bedingung "S_*" auch noch dazuschreiben ?
Gruß
Harald
Anzeige
AW: Spalten löschen
Reinhard
Hi Harry,
heute ist nicht anscheinend nicht mein Tag um logisch mit And und Or zu arbeiten, setze ein was du möchtest :-)
If Cells(1, c).Value "VIN" or left(Cells(1, c),3) "T_J" or left(Cells(1, c),2) "S_" then
Wichtig ist auch rückwärts zu laufen in der Schleife wie Björn es gezeigt hat,
for c = cz to 1 step -1
Anstatt left() kannst du auch sein "like" nehmen, das akzeptiert Jokerzeichen.
Zum Blinken, bau
application.screenupdating=false
anfangs der Sub und
application.screenupdating=true
am Ende ein.
Gruß
Reinhard
Gruß
Reinhard
Anzeige
AW: Spalten löschen
20.10.2004 11:25:57
Harald
Hallo Reinhard,
vielen Dank für die Mühen.
Bringt leider nicht den gewünschten Erfolg. Hat nix mit dem Code zu tun.
In einer selbst erstellten Musterdatei läuft er prima.
Nur für die relevante Datei klappts nicht, da es sich um Datenbankwerte handelt.
Die werden als Text in ein Sheet eingefügt und komplett unsystematisch/unmotiviert als Zahl formatiert. Laut Anzeige ist alles als Zahl formatiert, Zahl- und Texteinträge stehen aber kunterbunt gemischt rechts bzw. links bündig.
Es bleiben also unnötige Spalten stehen und teilweise werden benötigte Spalten gelöscht.
Ich werd jetzt komplett unelegant den Makrorecorder starten und die unnötigen Spalten händisch löschen.
Der Mist, der aus mancher Datenbank kommt sollte verboten werden.
Lieben Gruß
Harry
Anzeige
AW: Spalten löschen
PeterW
Hallo Harry,
die Bedingung passt nicht so ganz und die Reihenfolge kann Probleme verursachen. Probier es mal so:

Sub wegdamit()
Dim c As Long, cz As Long
cz = Range("DC1").End(xlToRight).Column
For c = cz To 1 Step -1
If Cells(1, c).Value <> "VIN" Or Cells(1, c) Like "T_J*" Then
Columns(c).Delete
End If
Next c
End Sub

Gruß
Peter
AW: Spalten löschen
20.10.2004 10:40:42
Harald
Hi Peter,
löschen tut er ganz gut. Alles ausser der VIN Spalte. ;-))
Spalten T_JO1,T_JO2...bis 16 sollen stehn bleiben...und ich vergaß
Spalten S_JO1 bis 16 auch.
Gruß
Harry
Anzeige
AW: Spalten löschen
PeterW
Hallo Harry,
nur zur Sicherheit: gibt es T_J17 oder S_J22 oder ist bei 16 Schluss?
Gruß
Peter
AW: Spalten löschen
20.10.2004 11:36:02
Harald
Hi Peter,
siehe Antwort an Reinhard.
Upload sinnlos, Dateigröße 1800kb
...P.S. bei 16 ist nicht Schluss.
Um halbwegs auf Geschwindigkeit zu kommen, muss ich die Datei vor der Auswertung erstmal säubern. Aufgrund der unglaublichen Formatierung werd ich auf das "händische" Löschen ohne Schnick-Schnack zurückgreifen.
Gruß
Harry
AW: Spalten löschen
Reinhard
Hi harry,
wir brauchen doch nicht 1,8 MB, zur Not gibts ja auch .zip.
Kopier doch die ersten 10 zeilen der Datei in eine neue datei und stell die hier hoch.
Gruß
Reinhard
Anzeige
AW: Spalten löschen
20.10.2004 12:49:58
Harald
Hallo Reinhard,
der wahre Kämpfer gibt erst auf, wenn der PC brennt ;-))
Hier die Datei.
https://www.herber.de/bbs/user/12362.xls
Benötigt werden die Spalte(n) VIN, T_JO1 bis 16 sowie S_JO1 bis 16
T = Drehmoment
JO = Joint (Schraubfall)
S = Status
Bin mal gespannt, was dir einfällt.
Gruß
Harald
AW: Spalten löschen
PeterW
Hallo Harry,
aha, das sollte ein O sein und nicht die 0. ;-)
Probier mal das:

Sub wegdamit()
Dim c As Long, cz As Long
cz = Range("DC1").End(xlToRight).Column
Application.ScreenUpdating = False
For c = cz To 1 Step -1
If Left(Cells(1, c), 4) = "T_JO" Or Left(Cells(1, c), 3) = "S_JO" Then
If Len(Cells(1, c)) = 6 Then
If Right(Cells(1, c), 2) > 16 Then
Columns(c).Delete
End If
End If
ElseIf Cells(1, c).Value <> "VIN" Then
Columns(c).Delete
End If
Next c
Application.ScreenUpdating = True
End Sub

Gruß
Peter
Anzeige
Zeichen und Wunder. Damit gehts
20.10.2004 13:18:45
Harald
Hi Peter,
Hut ab.
Besten Gruß
Harry
AW: Spalten löschen
Reinhard
Hi harry,
ein VBA-Huhn kämpft bs zum Grill *g

Sub Wechsel()
For n = 256 To 1 Step -1
If Cells(1, n) Like "VIN*" Or Cells(1, n) Like "T_JO*" Or Cells(1, n) Like "S_JO*" Then Cells(1, n).EntireColumn.Delete
Next n
End Sub

Gruß
Reinhard
Kurz und edel...vielen Dank
20.10.2004 14:12:24
Harald
Klasse gekämpft.
Sieht gut aus und tut's
...und vor allem. Ich habs auch kapiert.
Lieben Gruß
Harry
AW: Kurz und edel...vielen Dank
PeterW
Hallo Harry,
hast du den Code mal laufen lassen? Es werden ALLE Spalten gelöscht in denen in Zeile 1 etwas steht, was irgendwie wie "VIN", "T_JO" oder "S_JO" aussieht. Wenn das deine Aufgabenstellung war hab ich sie gründlich missverstanden.
Gruß
Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige