Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Die gleichen Spalten aus allen Arbeitsblättern einer Excel Datei löschen
#1
Hallo Leute, 

ich habe eine Excel Tabelle mit ca. 30 Arbeitsblättern. Nun möchte ich in allen Arbeitsblättern die gleichen Spalten löschen :19: .
Wenn ich die Arbeitsblätter gruppiere, kommt eine Fehlermeldung, das dies nicht möglich ist, wenn mehrere Arbeitsblätter markiert sind Dodgy .

Kennt jemand eine Möglichkeit mit der ich das löschen kann? Per Hand dauert das ewig, da ich jedes Arbeitsblatt auch noch in eine CSV Datei umwandle, damit ich diese später in eine Oracle Datenbank importieren kann.

Vielen Dank schonmal :D
Antworten Top
#2
Hallo,

wenn Du VBA benutzen darfst.

Code:
Sub prcSpaltenloeschen()
    Dim wksBlatt As Worksheet
    Dim arrTabellen As Variant
    Dim lngC As Long
    
    arrTabellen = Array(7, 5, 3)
    For Each wksBlatt In ThisWorkbook.Worksheets
        For lngC = 0 to UBound(ArrTabellen)
            wksBlatt.Columns(arrTabellen(lngC)).Delete
        Next lngC
    Next wksBlatt
End Sub

Es wird hier die 7., 5. und 3. Spalte gelöscht.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Jumper512
Antworten Top
#3
(17.05.2016, 11:27)Steffl schrieb: Hallo,

wenn Du VBA benutzen darfst.

Code:
Sub prcSpaltenloeschen()
   Dim wksBlatt As Worksheet
   Dim arrTabellen As Variant
   Dim lngC As Long
   
   arrTabellen = Array(7, 5, 3)
   For Each wksBlatt In ThisWorkbook.Worksheets
       For lngC = 0 to UBound(ArrTabellen)
           wksBlatt.Columns(arrTabellen(lngC)).Delete
       Next lngC
   Next wksBlatt
End Sub

Es wird hier die 7., 5. und 3. Spalte gelöscht.

Vielen Dank hat geklappt :D

Andere Frage: Ich muss jetzt noch in der ersten Spalte alle Zeilen mit dem Namen des Arbeitsblattes füllen. Also sagen wir ein Arbeitsblatt hat 4000 Zeilen die gefüllt sind, dann soll in der ersten Spalte überall der Name auftauchen. Das soll dann später in der Datenbank als ID dienen. Bin leider nicht so fit in VBA Huh . SQL ist eher meine Abteilung :P
Antworten Top
#4
(17.05.2016, 16:05)Jumper512 schrieb: SQL ist eher meine Abteilung :P

Das passt aber rein gar nicht zu deinem Ansinnen, dass immer der (identische) Arbeitsblattname als ID verwendet werden soll!
Aber in 2016 hast du ja Power Query integriert, und damit kannst du auf SQL-Basis schick auffüllen. Blush
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • Jumper512
Antworten Top
#5
Hallöchen,

das ist relativ easy, wenn in Spalte B auch alles gefüllt ist. Trage in A1 den Namen ein, markiere A1 gehe mit der Maus über die rechte untere Ecke von A1 und klicke doppelt auf die Ecke. Dann füllt Excel alles bis zum letzten Eintrag in B aus.
Ist nicht alles in B gefüllt, musst Du die Aktion ggf. mit dem letzten Eintrag in A wiederholen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Jumper512
Antworten Top
#6
Es gibt noch mehr (und bei mehreren Begriffen in einer Spalte) vielleicht elegantere Möglichkeiten. Schau mal bei Excel-ist-sexy rein ... Wink.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • Jumper512
Antworten Top
#7
(17.05.2016, 17:06)GMG-CC schrieb:
(17.05.2016, 16:05)Jumper512 schrieb: SQL ist eher meine Abteilung :P

Das passt aber rein gar nicht zu deinem Ansinnen, dass immer der (identische) Arbeitsblattname als ID verwendet werden soll!
Aber in 2016 hast du ja Power Query integriert, und damit kannst du auf SQL-Basis schick auffüllen. Blush

Am Ende kommen alle Arbeitsblätter in die gleiche Oracle Datenbank Tabelle. Die ID soll dann die Zugehörigkeit bestimmen. Diese Daten werde ich dann später in der Oracle Datenbank weiterverarbeiten.
Antworten Top
#8
(17.05.2016, 17:21)schauan schrieb: Hallöchen,

das ist relativ easy, wenn in Spalte B auch alles gefüllt ist. Trage in A1 den Namen ein, markiere A1 gehe mit der Maus über die rechte untere Ecke von A1 und klicke doppelt auf die Ecke. Dann füllt Excel alles bis zum letzten Eintrag in B aus.
Ist nicht alles in B gefüllt, musst Du die Aktion ggf. mit dem letzten Eintrag in A wiederholen.

Danke, aber ich wollte mehr eine automatische Lösung. Wenn ich doch wieder was ändere, müsst ich wieder 30 Arbeitsblätter manuell umändern ;D
Antworten Top
#9
Hallo,

nicht das Gelbe vom Ei :s

Code:
Sub prcSpaltenloeschen()
   Dim wksBlatt As Worksheet
   Dim arrTabellen As Variant
   Dim lngC As Long, lngLetzteZeile As Long
  
   arrTabellen = Array(7, 5, 3)
   For Each wksBlatt In ThisWorkbook.Worksheets
       For lngC = 0 To UBound(arrTabellen)
           wksBlatt.Columns(arrTabellen(lngC)).Delete
       Next lngC
       lngLetzteZeile = wksBlatt.Cells(wksBlatt.Rows.Count, 2).End(xlUp).Row
       wksBlatt.Cells(1, 1).Resize(lngLetzteZeile).Value = wksBlatt.Name
   Next wksBlatt
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#10
Hi,

(17.05.2016, 18:06)Jumper512 schrieb: Danke, aber ich wollte mehr eine automatische Lösung. Wenn ich doch wieder was ändere, müsst ich wieder 30 Arbeitsblätter manuell umändern ;D

dann trage ein Mal in jedes Arbeitsblatt in jede Zelle der Spalte A folgende Formel ein:
=TEIL(ZELLE("filename";$A$1);FINDEN("]";ZELLE("filename";$A$1))+1;FINDEN("]";ZELLE("filename";$A$1))-FINDEN("[";ZELLE("filename";$A$1))-1)

Nun hast Du dort in jeder Zelle den Blatt-Namen als "ID" stehen und bei Änderung des Blattnamens ändert sich auch die "ID".
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Jumper512
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste