Registriert seit: 28.05.2014
Version(en): 2013 / 2016
Ja, und dabei habe ich mir auch meine momentane Grippe zugezogen. :@
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!
Registriert seit: 15.11.2015
Version(en): Office 2013
Das Problem wurde in der Zwischenzeit gelöst.
Danke für die Meldungen!
LG Ubi5
Registriert seit: 18.10.2017
Version(en): MacOS
Hallo an alle,
Antwort und Frage an Euch:
Ich hatte auch das Problem, dass ich verschiedene Tabellenblätter mit gleichartiger Struktur in ein neues Tabellenblatt "Gesamt" konsolidieren wollte.
Ich habe keine VBA Erfahrung, habe aber zwei funktionierende Codes dazu gefunden.
Alternative A:
Das ist ganz elegant, man weiss aber nicht aus welchem Ursprungsblatt die Daten kommen.
Sub BlätterKonsolidieren()If Not Sheets(1).Name = "Gesamt" Then Sheets.Add before:=Sheets(1) Sheets(1).Name = "Gesamt"Else Sheets("Gesamt").Cells.ClearEnd IfSheets(2).Rows(1).Copy Sheets("Gesamt").Cells(1, 1)For i = 2 To Sheets.Count lr = Sheets("Gesamt").Cells(Rows.Count, "A").End(xlUp).Row + 1 Sheets(i).UsedRange.Offset(1).Copy Sheets("Gesamt").Cells(lr, "A")Next iEnd SubAlternative B:
Das hat den Vorteil, dass der Name der Ursprungsblätter in Spalte A kopiert wird. Da kann man auch eine Pivottabelle erstellen.
Es fehlen die Überschriften. Ausserdem wirkt es etwas komplizierter.
Sub Konsolidieren2()
'Konsolidierung ohne Überschriften ( Zeile 1 )'In Spalte A wird der Name der Herkunfttabelle gelistetDim Wks As WorksheetDim Bereich As RangeDim strLC As StringDim i As IntegerDim lngA As LongDim lngE As LongSet Wks = Worksheets.AddWks.Name = "Gesamt"For i = 2 To Worksheets.Count With Worksheets(i).UsedRange strLC = .Cells(.Rows.Count, .Columns.Count).Address Set Bereich = .Range("A2:" & strLC) lngA = Wks.Cells(Rows.Count, 1).End(xlUp).Row + 1 lngE = Bereich.Rows.Count Wks.Range("A" & lngA & ":A" & (lngE + lngA - 1)) = Worksheets(i).Name Bereich.Copy Destination:= _ Wks.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) End WithNext iEnd Sub
Weiß jemand, wie man die den Namen der Ursprungsblätter in den ersten Code integrieren kann?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
der Name ist einfach nur Sheets(i).Name. Nun wäre die Frage, wo das hin soll...
Eventuell
Sheets("Gesamt").Cells(lr, "A") = Sheets(i).Name
und dann in der Zeile mit dem Copy nimmst Du ...lr+1,"A"...
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)