Daten aus mehreren Excel-Dateien auswerten und in einer Tabelle zusammenfassen
Schritt-für-Schritt-Anleitung
Um Daten aus mehreren Excel-Dateien auszulesen und in einer neuen Tabelle zusammenzufassen, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
und wähle Modul
, um ein neues Modul zu erstellen.
- Kopiere den folgenden VBA-Code in das Modul:
Sub Daten_einlesen()
Dim wkbZiel As Workbook, wksZiel As Worksheet
Dim wkbQuelle As Workbook, wksQuelle As Worksheet, ZeiZ As Long
Dim varFiles As Variant, varDatei As Variant
Dim rngZelle As Range
Dim StatusCalc As Long
Dateiauswahl:
With Application.FileDialog(msoFileDialogOpen)
.Title = "Bitte auszuwertende Dateien auswählen - Mehrfachauswahl ist möglich"
.AllowMultiSelect = True
If .Show = -1 Then
Set varFiles = .SelectedItems
Else
GoTo Beenden
End If
End With
' Makrobremsen lösen
With Application
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
End With
' Zieldatei anlegen und vorbereiten
If wkbZiel Is Nothing Then
Set wkbZiel = Application.Workbooks.Add(Template:=xlWBATWorksheet)
Set wksZiel = wkbZiel.Worksheets(1)
With wksZiel
ZeiZ = 1
' Spaltentitel
.Cells(ZeiZ, 1).Value = "Zelle A17"
.Cells(ZeiZ, 2).Value = "Zelle E17"
.Cells(ZeiZ, 3).Value = "Zelle E18-AV50"
.Cells(ZeiZ, 4).Value = "Dateiname"
End With
End If
' Gewählte Dateien abarbeiten
For Each varDatei In varFiles
Set wkbQuelle = Application.Workbooks.Open(Filename:=varDatei, ReadOnly:=True)
Set wksQuelle = wkbQuelle.Sheets(1)
With wksQuelle
ZeiZ = ZeiZ + 1
wksZiel.Cells(ZeiZ, 1).Value = .Range("A17").Value
wksZiel.Cells(ZeiZ, 2).Value = .Range("E17").Value
' Zelle mit Wert in E18:AV50 suchen
Set rngZelle = Nothing
With .Range("E18:AV50")
' letzte Zelle mit Inhalt im Bereich
Set rngZelle = .Find(what:="*", After:=.Range("A1"), LookIn:=xlValues, _
lookat:=xlWhole, searchdirection:=xlPrevious)
End With
' Wert aus Zelle ggf. in Zielblatt eintragen
If Not rngZelle Is Nothing Then
wksZiel.Cells(ZeiZ, 3).Value = rngZelle.Value
End If
wksZiel.Cells(ZeiZ, 4).Value = wkbQuelle.Name
End With
wkbQuelle.Close savechanges:=False
Next
' Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
If .Calculation <> StatusCalc Then .Calculation = StatusCalc
.EnableEvents = True
End With
If MsgBox("weitere Dateien einlesen?", vbYesNo, "Werte aus Dateien einlesen") = vbYes _
Then GoTo Dateiauswahl
' Zieltabelle formatieren
With wksZiel
.Columns.AutoFit
End With
Beenden:
End Sub
- Schließe den VBA-Editor und kehre zu Excel zurück.
- Drücke
ALT + F8
, wähle Daten_einlesen
aus und klicke auf Ausführen
. Wähle die Excel-Dateien aus, aus denen du die Daten auslesen möchtest.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du kein VBA verwenden möchtest, kannst du auch die Power Query-Funktion in Excel nutzen, um Daten aus mehreren Excel-Dateien auszulesen. Dies erfordert jedoch eine andere Herangehensweise und ist möglicherweise weniger flexibel als ein VBA-Skript.
Praktische Beispiele
Ein Beispiel für die Anwendung des Makros wäre, wenn du Finanzdaten aus mehreren Excel-Dateien auswerten möchtest. Angenommen, in jeder Datei sind verschiedene Kostenarten in den Zellen A17 und E17 eingetragen. Mit dem Makro kannst du alle relevanten Daten in einer einzigen Tabelle zusammenfassen, was die Analyse der gesamten Datenmenge erheblich erleichtert.
Tipps für Profis
- Verwende Fehlerbehandlungsroutinen im VBA-Code, um unerwartete Fehler abzufangen.
- Halte deine Excel-Dateien gut organisiert, um die Datenanalyse zu erleichtern.
- Experimentiere mit Pivot-Tabellen, um die aus mehreren Excel-Dateien gewonnenen Daten weiter auszuwerten.
FAQ: Häufige Fragen
1. Frage
Kann ich das Makro auch für andere Zellen anpassen?
Antwort: Ja, du kannst die Zellreferenzen im VBA-Code anpassen, um andere Werte auszulesen.
2. Frage
Sind die Schritte für alle Excel-Versionen gleich?
Antwort: Die Schritte sind hauptsächlich für Excel 2016 und neuere Versionen ausgelegt, können jedoch auch in älteren Versionen ähnlich sein.