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.Clear
End If
Sheets(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 i
End Sub
Alternative 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 gelistet
Dim Wks As Worksheet
Dim Bereich As Range
Dim strLC As String
Dim i As Integer
Dim lngA As Long
Dim lngE As Long
Set Wks = Worksheets.Add
Wks.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 With
Next i
End 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)