aus mehreren Tabellenblätter eine Tabelle zusammenfügen
#11
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!
Top
#12
Das Problem wurde in der Zwischenzeit gelöst.
Danke für die Meldungen!

LG Ubi5
Top
#13
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? Huh
Top
#14
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)
Top


Gehe zu:


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