Supportnet Computer
Planet of Tech

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

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

Antwort 3 von AndiHenrich

Hallo Helmut,

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

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

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

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

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

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

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

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"

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

Antwort 13 von Ben1

Hi nighty,
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

Antwort 15 von nighty

hi ben :)

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

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