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.

mehrere Tabellen aus mehreren Arbeitsblätter zusammenführen
#1
Hallo zusammen

ich habe eine Excel-Datei mit jeder Menge Arbeitsblätter. Überall ist der Aufbau der Tabelle gleich.
Diese Tabellen möchte ich in ein neues Arbeitsblatt kopieren, nicht konsolidieren.

Klar geht es, jede Tabelle markieren und mit STGR C + STGR V in das Zielblatt zu kopieren. Aber bei der Menger der Blätter ist das eine nervige Aufgabe.

Weiß jemand eine Möglichkeit das irgendwie zu automatisieren?
Die Anzahl der Spalten und die Beschriftung der Spalten ist bei allen gleich. Die Anzahl der Zeilen ist unterschiedlich.

Anbei eine Testdatei (die Original ist natürlich viel größer)

Vielen Dank für Eure Hilfe
Grüße


Angehängte Dateien
.xlsx   Test Tabellen zusammen kopieren.xlsx (Größe: 17,16 KB / Downloads: 11)
Antworten Top
#2
Die Splittung der Daten hätte nie passieren dürfen.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
Hi,

in Zukunft snb's Hinweis beachten!

Zur Behebung Deines angerichteten Schadens kannst Du VBA verwenden oder PQ. Ich hab Dir mal mit PQ eine Lösung erstellt:

PHP-Code:
let
    Quelle 
Excel.Workbook(File.Contents("C:\Users\User\Downloads\Test Tabellen zusammen kopieren.xlsx"), nulltrue),
    #"Erweiterte Data" = Table.ExpandTableColumn(Quelle, "Data", {"Column1", "Column2", "Column3", "Column4", "Column5"}, {"Column1", "Column2", "Column3", "Column4", "Column5"}),
    #"Andere entfernte Spalten" = Table.SelectColumns(#"Erweiterte Data",{"Column1", "Column2", "Column3", "Column4", "Column5", "Name"}),
    #"Entfernte oberste Zeilen" = Table.Skip(#"Andere entfernte Spalten",1),
    #"Höher gestufte Header" = Table.PromoteHeaders(#"Entfernte oberste Zeilen", [PromoteAllScalars=true]),
    #"Gefilterte Zeilen" = Table.SelectRows(#"Höher gestufte Header", each ([Vorname] <> "Vorname")),
    #"Umbenannte Spalten" = Table.RenameColumns(#"Gefilterte Zeilen",{{"Kurs 1", "Kurs"}})
in
    
#"Umbenannte Spalten" 

Wobei Du natürlich den Pfad für die Quelle und ggf. die Spaltenangben in den erweiterten Daten noch anpassen musst...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#4
Hallo

ich habe mal eine VBA Lösung hochgeladen.  Die Tabelle "Übersicht" benannt.

mfg Gast 123


Angehängte Dateien
.xls   Test Tabellen zusammen kopieren.xls (Größe: 43 KB / Downloads: 4)
Antworten Top
#5
Code:
Sub M_snb()
  Tabelle1.Cells.Delete

  For j = 1 To Sheets.Count
    If Left(Sheets(j).Name, 1) = "K" Then Tabelle1.UsedRange.Offset(Tabelle1.UsedRange.Rows.Count * Abs((Tabelle1.Cells(1) <> ""))).Resize(Sheets(j).UsedRange.Rows.Count, 5) = Sheets(j).UsedRange.Offset(Abs(Tabelle1.Cells(1) <> "")).Value
  Next
End Sub

Ohne PQ:

Code:
Sub M_snb()
   Tabelle1.Cells.Delete

    With CreateObject("ADODB.Recordset")
      .Open "SELECT * FROM [Kurs 1$] Union Select * From  [Kurs 2$] Union Select * From  [Kurs 3$] Union Select * From  [Kurs 4$]", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1"""
      Tabelle1.Cells(2, 1).CopyFromRecordset .DataSource
    End With

    Tabelle2.UsedRange.Rows(1).Copy Tabelle1.Cells(1)
End Sub

Und etwas flexibeler:

Code:
Sub M_snb_000()
   Tabelle1.Cells.Delete
   Tabelle2.UsedRange.Rows(1).Copy Tabelle1.Cells(1)

   For Each it In Sheets
     c00 = c00 & it.Name & vbLf
   Next

    With CreateObject("ADODB.Recordset")
      .Open "SELECT * FROM [" & Join(Filter(Split(c00, vbLf), "Kurs"), "$] Union Select * From [") & "$]", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1"""
      Tabelle1.Cells(2, 1).CopyFromRecordset .DataSource
    End With
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
vielen Dank an alle für die Antworten.

Leider liegt es nicht in meiner Macht, dass es mehrere Tabellen sind, da die Informationen aus unterschiedlichen Abteilungen kommen.

Wäre es leichter die Tabellen zusammenzuführen, wenn es nicht unterschiedliche Blätter sondern unterschiedliche Excel-Dateien wären?

Vielen Dank auf jeden Fall und Grüße
Antworten Top
#7
(04.07.2024, 09:50)sekidame schrieb: Wäre es leichter die Tabellen zusammenzuführen, wenn es nicht unterschiedliche Blätter sondern unterschiedliche Excel-Dateien wären?

Das ist weder leichter noch schwerer, nur anders, weil ja die Bedingungen andere sind. Aber da (uns) die Bedingungern nicht bekannt sind, lässt sich da auch nichts konkretes dazu sagen...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top


Gehe zu:


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