Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1872to1876
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

Spalten löschen, mit Bedingung

Spalten löschen, mit Bedingung
19.03.2022 17:40:31
Elmar
Hallo Experten,
hab ein keines Problem, zu dem ich leider bisher keinen passenden Beispielcode gefunden habe.
Ich habe eine Tabelle mit immer unterschiedlich vielen Spalten (meist über 100). In 2 Spalten aber nur kommt in Zeile 1, 2 oder 3 das gleiche Wort vor (hier: "Identcode"), in allen anderen Spalten kommt der Begriff nicht vor, fast nur Zahlen. Diese Spalten mit dem Wort "Identcode" drin sind aber immer unterschiedlich (mal steht es in Spalte "D", dann wieder in "BU" oder "CX" usw.
Nun suche ich nach einem Makro, das mir alle mit Daten belegten Spalten nach dem Begriff durchsucht und dann alle Spalten automatisch löscht außer den beiden mit dem gesuchten Wort "Identcode". Irgendwie bekomme ich das nicht hin, hat jemand von euch Experten eine Idee?
Vorab Danke aus München
Elmar

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten löschen, mit Bedingung
19.03.2022 18:50:16
Oberschlumpf
Hi Elmar,
probier es mal so

Sub sbDelCol()
Dim lloRow As Long, lloCol As Long, larlo2Cols(1) As Long
For lloRow = 1 To 3 'nur in den Zeilen 1, 2 oder 3 kommt identcode vor
For lloCol = 1 To Cells(lloRow, Columns.Count).End(xlToLeft).Column 'durchsucht jede Spalte in den Zeilen 1 bis 3
If LCase(Cells(lloRow, lloCol).Value) = "identcode" Then
If larlo2Cols(0) = 0 Then
larlo2Cols(0) = lloCol 'sucht nach der 1. Spalte mit "identcode"
Else
larlo2Cols(1) = lloCol 'sucht nach der 2. Spalte mit "identcode"
Exit For
End If
End If
Next
If larlo2Cols(1)  0 Then
Exit For
End If
Next
For lloCol = Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
If lloCol  larlo2Cols(0) And _
lloCol  larlo2Cols(1) Then
Columns(lloCol).Delete Shift:=xlToLeft
End If
Next
End Sub
Wichtig!
- wähl vor dem Makrostart die Tabelle mit den vielen Spalten aus (also nicht alle Spalten markieren, sondern die richtige Tabelle muss die sichtbare sein)
- arbeite erst mal mit einer Kopie vom Original
- es werden wirklich alle Spalten gelöscht, in denen nicht 2x das Wort "identcode" vorkommt!
- es bleiben also nur 2 Spalten übrig
Hilfts?
Ciao
Thorsten
Anzeige
AW: Spalten löschen, mit Bedingung
19.03.2022 19:46:15
Elmar
Hallo Thorsten,
zunächst mal Danke für Deine Mühe, sowas würde ich ja nie hinkriegen....
Es will aber noch nicht so richtig funktionieren...In der Beispieltabelle kommt das Wort "identcode" in Spalte "B" in Zeile 2 und in Spalte "BW" in Zeile 2 vor. Die aktuelle Tabelle hat 146 Spalten (bis EP). Das Makro löscht nun die Spalte A wie gewünscht, lässt auch die Spalte B (Jetzt A) stehen wie gewünscht, aber dann löscht es irgendwelche Spalten raus, aber es bleiben noch jede Menge stehen, genau gesagt 72. Unter anderen wird aber auch die Spalte BW gelöscht mit eben dem Wort in der Zeile 2. Kannst Du nochmal schauen... Das Makro löscht zunächst die Spalte "A" und dann alle bis einschließlich "BW" (wo das Wort wieder drin steht). Die dann folgenden Spalten werden nicht gelöscht.
Danke Dir schon mal
Elmar
Anzeige
AW: Spalten löschen, mit Bedingung
19.03.2022 20:04:31
Elmar
Hallo Thorsten,
nicht dass ich mich falsch ausgedrückt habe, hab grade deine Antwort nochmal angeschaut..
Das Wort "identcode" kommt in allen Spalten wirklich nur 2 x insgesamt vor, aber nicht ggf. 2 x in der gleichen Spalte. Das Wort kann nur einmal entweder in Zeile 1, 2 oder 3 stehen. Ich denke, das passt schon, aber nur zur Sicherheit nochmal eine kurze Erläuterung.
VG
Elmar
AW: Spalten löschen, mit Bedingung
19.03.2022 20:15:52
Oberschlumpf
Hi Elmar,
ich hatte zuerst so verstanden, "identcode" kommt in 2 Spalten, aber in der selben ZEILE vor.
Ok, macht aber nix, mein Code funktioniert eigentlich trotzdem.
Hier, schau mal, hab ein Video aufgenommen:
https://c.gmx.net/@334256655850015599/EjukaXGsT3CkS1bSjiY2Ww
Ciao
Thorsten
Anzeige
AW: Spalten löschen, mit Bedingung
19.03.2022 20:55:06
Elmar
Hallo Thorsten,
wenn ich Deine Tabelle nachbaue, dann klappt es, echt zum ärgern..
In meiner Tabelle stehen die beiden Worte "identcode" wirklich fast immer in der Zeile 2 in unterschiedlichen Spalten. Kann es daran liegen, dass die Zeile 1 nicht immer gefüllt ist bei allen Spalten? Wenn ich aber überall was reinschreibe in alle Spalten in Zeile 1, dann löscht es mir alle Spalten komplett raus und ich hab eine leere Tabelle. Kann es ggf. was damit zu tun haben, dass die Daten aus einem Import aus einer csv Datei kommen?
Sorry, wenn ich dir soviel Arbeit mache...
VG
Elmar
Anzeige
AW: Spalten löschen, mit Bedingung
20.03.2022 01:38:51
Oberschlumpf
Hi Elmar,
zeig mir per Upload bitte eine Bsp-Datei, in der mein Code nicht funktioniert.
Ohne diese Datei "quatschen" wir nur weiter hin und her, ohne, dass was passiert.
Ciao
Thorsten
AW: Spalten löschen, mit Bedingung
20.03.2022 10:20:09
Elmar
Hallo Thorsten,
hier eine Beispieldatei, da bleiben bei mir immer noch Spalten stehen.
Danke vorab
VG
Elmar
https://www.herber.de/bbs/user/151897.xlsm
AW: Spalten löschen, mit Bedingung
20.03.2022 10:47:07
Oberschlumpf
Moin Elmar :-)
Ich wusste, wenn ich SEHE, was falsch läuft, versteh ich auf jeden Fall besser, als wenn ich es nur...LESE! :-)
hier, der korrigierte Code mit deinen Bsp-Daten:
https://www.herber.de/bbs/user/151899.xlsm
DU hattest den Fehler auch schon erkannt:
Kann es daran liegen, dass die Zeile 1 nicht immer gefüllt ist bei allen Spalten?
(aber ich tu mich oft schwer mit nur lesen, ich mag lieber Bsp-Dateien - da is alles klipp + klar und kann nicht missverstanden und/oder übersehen werden)
Jep, genau das war der "Fehler".
Mein alter Code hatte "stur" nur immer alle benutzten Spalten in - Zeile 1 - überprüft....und deswegen "nicht gemerkt", dass in Zeile 2 noch viel mehr Spalten genutzt werden.
Bevor nun die überflüssigen Spalten gelöscht werden, wird erst mal ermittelt, in welcher Zeile die meisten, genutzten Spalten enthalten sind - und genau die Zeile wird dann verwendet, um alle genutzten Spalten nach "identcode" zu durchsuchen.
Hilfts jetzt?
Ciao
Thorsten
Anzeige
AW: Spalten löschen, mit Bedingung
20.03.2022 11:19:06
Elmar
Hallo Thorsten,
!! BINGO !!
Läuft jetzt genau so, wie es sein soll!
Danke für deine super Unterstützung
VG aus Bayern
Elmar
AW: Spalten löschen, mit Bedingung
21.03.2022 00:09:50
Daniel
Hi

with activesheet.usedrange
With .rows(.rows.count + 1)
.formular1c1 = "=if(Countif(r1c:r3c,""identcode""),"""", 1)
.specialcells(xlcelltypeformulas, 1).entirecolumn.delete
.clearcontents
End With
End with
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige