AGB  ·  Datenschutz  ·  Impressum  







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

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
14 Beiträge
 
#1

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 15: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.740 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 13. Jan 2021, 17: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
14 Beiträge
 
#3

AW: Excel Tabellen aus mehreren Dateien zusammenführen

  Alt 16. Jan 2021, 09: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
Alt 16. Mär 2021, 15:17     Erstellt von TopCoder
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Antwort Antwort


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:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz