Supportnet / Forum / Tabellenkalkulation
Excel Summe über mehrere Tabellenblätter einer anderen Datei
Frage
Hallo Excel-Profis,
Ausgangslage:
Ich habe eine Exceldatei mit 12 Tabellenblättern, die alle genau gleich aufgebaut sind (Auswertungen von Januar-Dezember)
In einer anderen Datei möchte ich nun auf diese Tabellenblätter zugreifen und zwar soll in einer Zelle dann die Summe der Zelle zB e3 von den Tabellenblättern Januar bis Dezember auftauchen.
Eine unelegante Lösung ist sicherlich:
=´[Datei.xls]januar´b10+´[Datei.xls]Februar´b10+´[Datei.xls]März´b10 usw.
Da ich das gerne für mehrere Zellen machen möchte, gibt das ja ein wahnsinns Tippaufwand und es wird unübersichtlich.
Gibt es da eine einfachere Lösung?
Grüße
Andi
Antwort 1 von Saarbauer
Hallo,
versuchs mal mit
=SUMME(Januar:Dezember!B10)
Gruß
Helmut
versuchs mal mit
=SUMME(Januar:Dezember!B10)
Gruß
Helmut
Antwort 2 von Saarbauer
Hallo,
hatte übersehen, dass eine andere Tabelle benutzt wird, dann ist das Ganze wie folgt zu ändern
=SUMME([Datei.xls]Januar:Dezember!B10)
Gruß
Helmut
hatte übersehen, dass eine andere Tabelle benutzt wird, dann ist das Ganze wie folgt zu ändern
=SUMME([Datei.xls]Januar:Dezember!B10)
Gruß
Helmut
Antwort 3 von AndiHenrich
Hallo Helmut,
das klappt - kurz und bündig - genau wie es sein soll.
Vielen Dank!!!
Andi
das klappt - kurz und bündig - genau wie es sein soll.
Vielen Dank!!!
Andi
Antwort 4 von Ben1
Super!
Auch ich habe nach dieser Lösung gesucht.
Aber:
Was mache ich wenn die Dateien zwar im gleichen Unterverzeichnis stehen aber mir die Namen der Dateien im Vorfeld nicht bekannt sind, bzw. die Dateinamen sich ändern können?
Ich benutze die Dateien für eine Permanentinvertur meines Bestandes. Dabei ist der Dateiname = der Kundenname.
Gibt es so was wie *.*?
=SUMME([Datei*.xls]Januar:Dezember!B10)
Ich hoffe ihr könnt mir helfen!
Gruß
Ben
Auch ich habe nach dieser Lösung gesucht.
Aber:
Was mache ich wenn die Dateien zwar im gleichen Unterverzeichnis stehen aber mir die Namen der Dateien im Vorfeld nicht bekannt sind, bzw. die Dateinamen sich ändern können?
Ich benutze die Dateien für eine Permanentinvertur meines Bestandes. Dabei ist der Dateiname = der Kundenname.
Gibt es so was wie *.*?
=SUMME([Datei*.xls]Januar:Dezember!B10)
Ich hoffe ihr könnt mir helfen!
Gruß
Ben
Antwort 5 von Saarbauer
Hallo,
geht auch mit anderen Bezeichnungen, wobei das erste und Letzte Blatt als Bezug erhalten bleibt, andere / neue Blätter dazwischen setzen.
Beispiel
Alt aa ..... bb..... cc
neu aa .....bb ...ddd... eee...cc
=SUMME([Datei*.xls]aa:cc!B10)
hoffentlich verständlich
geht auch mit anderen Bezeichnungen, wobei das erste und Letzte Blatt als Bezug erhalten bleibt, andere / neue Blätter dazwischen setzen.
Beispiel
Alt aa ..... bb..... cc
neu aa .....bb ...ddd... eee...cc
=SUMME([Datei*.xls]aa:cc!B10)
hoffentlich verständlich
Antwort 6 von Ben1
Hallo,
Danke für deine Hilfe, aber wie sieht die Formel aus wenn mehrere Dateien, deren Namen vorher nicht bekant sind, erfaßt werden sollen.
Beispiel:
Kunde1 (Dateiname: Müller.xls) möchte ein Artikel leihen. Die Stückzahl wird in die Datei eigetragen und gespeichert.
Ein Zweiter Kunde (Dateiname: Meier.xls) leiht ebenfalls etwas aus.
Usw.
Ein Dritter, Ein vierter....
Da nicht nicht weiß wer bei mir etwas leihen möchte kann ich auch die Dateinamen nicht vorher benennen.
So entstehen viele Dateien (ca. 20 Stück) mit unterschiedlichen Dateinamen. Diese ändern sich von Woche zu Woche.
Jetzt möchte ich in einer seperaten Datei alle Mengen
zusammen addieren um zu entscheiden, ob ich noch weitere Artikel verleihen kann oder ob mein Bestand für diese Woche erschöpft ist. Somit könnte ich weitere Kunden nicht bedienen.(Permanentinventur)
Kann mir Jemand helfen?
Ich habe keine Ahnung wie ich da weiter kommen soll.
Gruß
Ben
Danke für deine Hilfe, aber wie sieht die Formel aus wenn mehrere Dateien, deren Namen vorher nicht bekant sind, erfaßt werden sollen.
Beispiel:
Kunde1 (Dateiname: Müller.xls) möchte ein Artikel leihen. Die Stückzahl wird in die Datei eigetragen und gespeichert.
Ein Zweiter Kunde (Dateiname: Meier.xls) leiht ebenfalls etwas aus.
Usw.
Ein Dritter, Ein vierter....
Da nicht nicht weiß wer bei mir etwas leihen möchte kann ich auch die Dateinamen nicht vorher benennen.
So entstehen viele Dateien (ca. 20 Stück) mit unterschiedlichen Dateinamen. Diese ändern sich von Woche zu Woche.
Jetzt möchte ich in einer seperaten Datei alle Mengen
zusammen addieren um zu entscheiden, ob ich noch weitere Artikel verleihen kann oder ob mein Bestand für diese Woche erschöpft ist. Somit könnte ich weitere Kunden nicht bedienen.(Permanentinventur)
Kann mir Jemand helfen?
Ich habe keine Ahnung wie ich da weiter kommen soll.
Gruß
Ben
Antwort 7 von Saarbauer
Hallo,
das Problem habe ich jetzt erkannt, aber da habe ich so keine Lösung parat. Werde mal überlegen, vielleicht fällt mir was ein. Habe aber im Moment die Vermutung, dass das nur mit VBA zu lösen ist.
Gruß
Helmut
das Problem habe ich jetzt erkannt, aber da habe ich so keine Lösung parat. Werde mal überlegen, vielleicht fällt mir was ein. Habe aber im Moment die Vermutung, dass das nur mit VBA zu lösen ist.
Gruß
Helmut
Antwort 8 von nighty
hi all :))
wie gewünscht :)
gruss nighty
Option Explicit
Sub makro01()
Dim tabellen As Integer
Dim Dateien As Integer
Dim Zeichen As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
rem pfad
.LookIn = "C:\test3"
.SearchSubFolders = False
.Filename = "*.*"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
For Zeichen = Len(.FoundFiles(Dateien)) - 4 To 1 Step -1
If Mid(.FoundFiles(Dateien), Zeichen, 1) = "\" Then
DateiName = Mid(.FoundFiles(Dateien), Zeichen + 1, Len(.FoundFiles(Dateien)) - 4)
Exit For
End If
Next Zeichen
rem abtastung aller sheets
For tabellen = 1 To Sheets.Count
rem A1 wird ausgelesen
rem die gesamtsumme aller dateien wird in A1 dargestellt
rem pfad wie zelle wären anzupassen
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & DateiName & "]" & Sheets(tabellen).Name & "´!" & Range("A1").Address(, , xlR1C1))
Next tabellen
Next Dateien
End If
End With
End Sub
wie gewünscht :)
gruss nighty
Option Explicit
Sub makro01()
Dim tabellen As Integer
Dim Dateien As Integer
Dim Zeichen As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
rem pfad
.LookIn = "C:\test3"
.SearchSubFolders = False
.Filename = "*.*"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
For Zeichen = Len(.FoundFiles(Dateien)) - 4 To 1 Step -1
If Mid(.FoundFiles(Dateien), Zeichen, 1) = "\" Then
DateiName = Mid(.FoundFiles(Dateien), Zeichen + 1, Len(.FoundFiles(Dateien)) - 4)
Exit For
End If
Next Zeichen
rem abtastung aller sheets
For tabellen = 1 To Sheets.Count
rem A1 wird ausgelesen
rem die gesamtsumme aller dateien wird in A1 dargestellt
rem pfad wie zelle wären anzupassen
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & DateiName & "]" & Sheets(tabellen).Name & "´!" & Range("A1").Address(, , xlR1C1))
Next tabellen
Next Dateien
End If
End With
End Sub
Antwort 9 von nighty
hi all :)
noch ein wenig verbessert :))
gruss nighty
Option Explicit
Sub makro01()
Dim tabellen As Integer
Dim Dateien As Integer
Dim Zeichen As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
.LookIn = "C:\test3"
.SearchSubFolders = False
.Filename = "*.*"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
For tabellen = 1 To Sheets.Count
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & _
Mid(.FoundFiles(Dateien), Len(.LookIn) + 2, Len(.FoundFiles(Dateien))) & "]" & _
Sheets(tabellen).Name & "´!" & Range("A1").Address(, , xlR1C1))
Next tabellen
Next Dateien
End If
End With
End Sub
noch ein wenig verbessert :))
gruss nighty
Option Explicit
Sub makro01()
Dim tabellen As Integer
Dim Dateien As Integer
Dim Zeichen As Integer
Dim DateiName As String
With Application.FileSearch
.NewSearch
.LookIn = "C:\test3"
.SearchSubFolders = False
.Filename = "*.*"
If .Execute() > 0 Then
For Dateien = 1 To .FoundFiles.Count
For tabellen = 1 To Sheets.Count
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & _
Mid(.FoundFiles(Dateien), Len(.LookIn) + 2, Len(.FoundFiles(Dateien))) & "]" & _
Sheets(tabellen).Name & "´!" & Range("A1").Address(, , xlR1C1))
Next tabellen
Next Dateien
End If
End With
End Sub
Antwort 10 von Ben1
Hi nighty,
kannst du mir bitte erklären wie ich den Code einbinde? (Erklärung für "Dumme", habe keine Ahnung von VBA).
Habe ein CommandButton1 eingefügt und dann den Code hinein kopiert. -StrgC /V.
Funzt aber nicht. Was mache ich falsch?
Vielen Dank !!!
Ben
kannst du mir bitte erklären wie ich den Code einbinde? (Erklärung für "Dumme", habe keine Ahnung von VBA).
Habe ein CommandButton1 eingefügt und dann den Code hinein kopiert. -StrgC /V.
Funzt aber nicht. Was mache ich falsch?
Vielen Dank !!!
Ben
Antwort 11 von nighty
hi ben :)
getestet mit commandbutton bzw makroaufruf
gruss nighty
in dieser zeile muessen die angaben stimmen
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & _
Mid(.FoundFiles(Dateien), Len(.LookIn) + 2, Len(.FoundFiles(Dateien))) & "]" & _
Sheets(tabellen).Name & "´!" & Range("A1").Address(, , xlR1C1))
in diesen abschnitt das ergebnis in A1,die erste 1 fuer die zeile,die zweite 1 fuer die spalte
Cells(1, 1) = Cells(1, 1) +
in dem abschnitt ist die zelle die ausgelesen wird ,A1
Range("A1").Address(, , xlR1C1))
in dem abschnitt ist der pad anzugeben
ExecuteExcel4Macro("´C:\test3\"
genauso bei dieser zeile
.LookIn = "C:\test3"
getestet mit commandbutton bzw makroaufruf
gruss nighty
in dieser zeile muessen die angaben stimmen
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & _
Mid(.FoundFiles(Dateien), Len(.LookIn) + 2, Len(.FoundFiles(Dateien))) & "]" & _
Sheets(tabellen).Name & "´!" & Range("A1").Address(, , xlR1C1))
in diesen abschnitt das ergebnis in A1,die erste 1 fuer die zeile,die zweite 1 fuer die spalte
Cells(1, 1) = Cells(1, 1) +
in dem abschnitt ist die zelle die ausgelesen wird ,A1
Range("A1").Address(, , xlR1C1))
in dem abschnitt ist der pad anzugeben
ExecuteExcel4Macro("´C:\test3\"
genauso bei dieser zeile
.LookIn = "C:\test3"
Antwort 12 von nighty
hi ben :)
vergass noch etwas :)
gruss nighty
wenn du den code in die schaltfläche kopierst sind diese zeilen zu entfernen
Option Explicit
Sub makro01()
End Sub
oder
in dem code der schaltfläche einen makroaufruf wie z.b.
makro01
dann wäre das makro in einem allgemeinen modul abzulegen z,b,
alt f11/projektexplorer/einfuegen/modul
vergass noch etwas :)
gruss nighty
wenn du den code in die schaltfläche kopierst sind diese zeilen zu entfernen
Option Explicit
Sub makro01()
End Sub
oder
in dem code der schaltfläche einen makroaufruf wie z.b.
makro01
dann wäre das makro in einem allgemeinen modul abzulegen z,b,
alt f11/projektexplorer/einfuegen/modul
Antwort 13 von Ben1
Hi nighty,
cool. -Werde ich mal versuchen.
Melde mich wieder.
Vielen Dank!
Gruß
Ben
cool. -Werde ich mal versuchen.
Melde mich wieder.
Vielen Dank!
Gruß
Ben
Antwort 14 von Ben1
Hi nighty,
ich bekomme es einfach nicht hin. Das Programm bleibt bei .Filename = "*.*" stehen.
Kannst du mir die Datei als Anhang schicken?
(WK_Porzellanverleih@web.de)
Danke!
Gruß
Ben
ich bekomme es einfach nicht hin. Das Programm bleibt bei .Filename = "*.*" stehen.
Kannst du mir die Datei als Anhang schicken?
(WK_Porzellanverleih@web.de)
Danke!
Gruß
Ben
Antwort 15 von nighty
hi ben :)
abgeschickt bzw. sollte es noch probs geben hast ja meine email
gruss nighty
abgeschickt bzw. sollte es noch probs geben hast ja meine email
gruss nighty
Antwort 16 von nighty
hi all :)
das ist nun das ergebnis :)
noch mit der möglichkeit zellbereiche anzugeben
gruss nighty
Sub makro01()
Dim tabellen As Integer
Dim Dateien As Integer
Dim DateiName As String
Dim zelle As Range
With Application.FileSearch
.NewSearch
.LookIn = "C:\test3"
.SearchSubFolders = False
.Filename = "*.*"
If .Execute() > 0 Then
Cells(1, 1) = ""
For Dateien = 1 To .FoundFiles.Count
For tabellen = 1 To Sheets.Count
For Each zelle In Range("A1,A2")
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & _
Mid(.FoundFiles(Dateien), Len(.LookIn) + 2, Len(.FoundFiles(Dateien))) & "]" & _
Sheets(tabellen).Name & "´!" & zelle.Address(, , xlR1C1))
Next zelle
Next tabellen
Next Dateien
End If
End With
End Sub
das ist nun das ergebnis :)
noch mit der möglichkeit zellbereiche anzugeben
gruss nighty
Sub makro01()
Dim tabellen As Integer
Dim Dateien As Integer
Dim DateiName As String
Dim zelle As Range
With Application.FileSearch
.NewSearch
.LookIn = "C:\test3"
.SearchSubFolders = False
.Filename = "*.*"
If .Execute() > 0 Then
Cells(1, 1) = ""
For Dateien = 1 To .FoundFiles.Count
For tabellen = 1 To Sheets.Count
For Each zelle In Range("A1,A2")
Cells(1, 1) = Cells(1, 1) + ExecuteExcel4Macro("´C:\test3\" & "[" & _
Mid(.FoundFiles(Dateien), Len(.LookIn) + 2, Len(.FoundFiles(Dateien))) & "]" & _
Sheets(tabellen).Name & "´!" & zelle.Address(, , xlR1C1))
Next zelle
Next tabellen
Next Dateien
End If
End With
End Sub
Antwort 17 von nighty
hi all :))
noch fuer interessierte vielleicht :))
gruss nighty
For Each zelle In Range("A1,A2")
in dieser zeile sind die bereichsangaben die aber bei allen vorhandenen tabellen gleich sind,wollte man hier verschiedene bereichsangaben haben wollen,wuerde sich ein zweidimensionales array anbieten,dieses als innerste schleife einbauen.
gruss nighty
noch fuer interessierte vielleicht :))
gruss nighty
For Each zelle In Range("A1,A2")
in dieser zeile sind die bereichsangaben die aber bei allen vorhandenen tabellen gleich sind,wollte man hier verschiedene bereichsangaben haben wollen,wuerde sich ein zweidimensionales array anbieten,dieses als innerste schleife einbauen.
gruss nighty

