AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Excel Tabellen aus mehreren Dateien zusammenführen

Excel Tabellen aus mehreren Dateien zusammenführen

Ein Thema von magstripe · begonnen am 13. Jan 2021 · letzter Beitrag vom 16. Jan 2021
Antwort Antwort
magstripe

Registriert seit: 8. Sep 2020
12 Beiträge
 
#1

Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 14:54
Hallo,

heute habe ich mal ein ganz anderes Problem.Ich soll aus mehreren Dateien, die alle die gleiche Tabelle enthalten, eine Datei mit einer Tabelle machen in der die Werte aus allen anderen Dateien in eine Tabelle zusammengeführt wurden.

Also, die Tabelle hat ca. 30 Spalten. in den ersten 4 Spalten steht immer das gleiche. In den anderen Spalten ist pro Datei immer nur eine Spalte ausgefüllt.Beispliel: In der ersten Datei Spalte 1, in der zweiten Spalte 7, in der dritten Spalte 19 usw. Am Ende brauche ich eine Datei mit einer Tabelle in der alle Spalten gefüllt sind.

Ich habe viel gesucht, mit VBA probiert, aber ich bekomme es einfach nciht hin. Kennst sich jemand mit Excel aus und hat einen Tip für mich? Kann auch ein Add-On sein das Geld kostet. Hauptsache ich bekomme das hin.

Viele Grüße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.715 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 15:19
Sollte einfach mit der Funktion SVERWEIS() möglich sein.
Markus Kinzler
  Mit Zitat antworten Zitat
magstripe

Registriert seit: 8. Sep 2020
12 Beiträge
 
#3

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 15:34
Das ist nicht wirklich praktikabel. Ich werde ca. 50 x 20 gleiche Dateien bekommen. Wenn ich für jede der 50 Dateien die Spaltenabfrage schreibe, bin ich mit Copy + Paste fast schneller. Ich dachte mehr an eine automatische Möglichkeit. Leere Tabelle erstellen, alle Dateien die reinsollen auswählen und Makro laufen lassen. Mit PowerQuery funktioniert das recht einfach, wenn ich Zeilen anfüge. Aber es muss doch auch möglich sein das mit Spalten zu machen.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.672 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 15:47
Ehrlich gesagt klingt das ziemlich einfach. Ist das eine einmalige Sache oder was daueraftes? Muss das mit Delphi gesteuert werden oder reicht eine Excel-Datei mit ein paar Makros aus um das zu steuern?

Die ersten vier Spalten sind bei allen Tabellen gleich sagst du, die nachfolgenden Spalten sind bis auf jeweils eine andere immer leer?

Haben alle Spalten die gleiche Anzahl Zeilen in den Dateien und ist auch die Reihenfolge immer gleich, oder muss anhand der Werte in Spalte 1-4, die ja immer gleich sind, ein Datensatz in der anderen Datei gefunden und zugeordnet werden?

Gibt es eine Headerspalte? Ist wenn die Daten in der Datei in z.B. Spalte 11 stehen, in jeder Zelle in Spalte 11 auch was drin und vor allem, ist mindestens in der ersten Zeile die Daten enthält (also nicht Header) was drin?
Ralph

Geändert von Jumpy (13. Jan 2021 um 15:50 Uhr)
  Mit Zitat antworten Zitat
magstripe

Registriert seit: 8. Sep 2020
12 Beiträge
 
#5

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 16:17
"Ehrlich gesagt klingt das ziemlich einfach. " Dachte ich auch...

Es muss nicht mit Delphi gesteuert werden. Ein Makro in Excel wäre ausreichend. Die Tabellen die zusammengeführt werden müssen sind immer gleich. Gleiche Anzahl Spalten, gleiche Überschriften, gleiche Reiehenfolge. Nur ist halt immer eine andere Spalte ausgefüllt. Im Grunde muss man sich das so vortstellen: Ich drucke jede Tabelle auf eine durchsichtige Folie und lege die übereinander und dann steht in jeder Spalte was drin.

Ich muss dazu sagen dass ich mit Excel ein Anfänger bin. Nur aus der Not heraus wurde mir das untergejubelt

(Ja, die ersten Spalten sind immer gleich. Hier handelt es sich um Namen usw.)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.672 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 18:10
OK. Sorry das ich noch weiter Frage, aber dann kann ich dir vllt. nachher mit einem konkreteren Makro helfen. Kann man der Datei (am Namen z.B.) ansehen, welche Spalte die gefüllte ist oder muss man das in dem Makro erst rausfinden. Da würde dann natürlich helfen, wenn immer die erste Zeile (bzw. wg. Headline) die zweite Zeile in der betreffenden Spalte auch Daten drin hätte, denn dann könnte man durch alle Spalten durchgehen, schauen in welcher Spalte in Zeile 2 was steht und weiß dann: In dieser Datei sind die Daten in Splate X.

Fangen wie mal an:
Leere Excel-Datei, wo das Makro reinkommt:

Code:
Public Sub Fill Table
  Dim w as Worksheet, wQuelle as Worksheet, wb as Workbook
  Dim Dateiliste as Collection, fn as String
  Dim row as Long, col as Long, c as Long
 
  Set Dateiliste=New Collection
  Dateiliste.Add "Pfad und Name Datei 1.xlsx"
  Dateiliste.Add "Pfad und Name Datei 2.xlsx"
  'usw.
  'Natürlich könnte man auch alle Dateien in ein Verzeichnis machen und
  'dann hier eine Funktion benutzen, die das Verzeichnis ausliest und alle Dateien
  'in diese Liste hier schreibt. Kann man Googlen, wie das ginge.
 
  'Das Worksheet, wo alles reinkommt
  Set w=ThisWorkbook.Worksheets(1)

  'Die erste Datei öffnen und die Headline sowie die Spalten 1-4 übertragen:
  fn=Dateiliste.Items(0)
  Set wb = Workbooks.Open(fn)
  'Annahme: Die Tabelle ist immer im ersten Workshheet/Arbeitsblatt
  Set wQuelle=wb.Worksheets(1)  
  For col From 1 to wb.UsedRange.Columns.Count
    'Headline übertragen
    w.cells(1,col).value=wQuelle.Cells(1,col)  
    'Spalte übertragen bei 1-4
    If Col<=4 then
      For row=2 to wQuelle.UsedRange.Rows.Count
        w.cells(row,col).value=wQuelle.Cells(row,col)  
      Next row
    End IF
  Next col
  Set wQuelle=Nothing
  wb.Close False
 
  'Jetzt nacheinander alle Dateien öffnen, volle Spalte suchen und übertragen
  For Each fn in Dateiliste
    Set wb = Workbooks.Open(fn)
    Set wQuelle=wb.Worksheets(1)  
    'Richtige Spalte suchen, die in der zweiten Zeile hoffentlich Inhalt hat
    For col From 5 to wb.UsedRange.Columns.Count
      If wQuelle.Cells(2,col).value<>"" Then  
        c=col
        Exit For
      End If  
    Next col
 
    'Spalte übertragen
    For row=2 to wQuelle.UsedRange.Rows.Count
      w.cells(row,c).value=wQuelle.Cells(row,c)  
    Next row
   
    'Aufräumen und Datei schließen
    Set wQuelle=Nothing
    wb.Close False
  Next fn
End Sub
Ist jetzt nur im Editor hingetippert, also bestimmt noch buggy.
Ralph
  Mit Zitat antworten Zitat
magstripe

Registriert seit: 8. Sep 2020
12 Beiträge
 
#7

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 16. Jan 2021, 10:12
Hallo Jumpy,

danke für deine Hilfe. Ich habe es nun mit einem einfachen Makro hinbekommen.
Ich gehe jetzt einfach durch alle Zellen und kopiere den Wert hinein, wenn die Zelle leer ist.

Vielen Dank und viele Grüße
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf