Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Lösung-Werte zusammenfassen

VBA Lösung-Werte zusammenfassen
17.07.2016 16:03:17
Bea
Hallo,
ich benötige mal wieder Hilfe :-( und sag im Voraus wie immer wieder DANKE.
Ich habe 5 sheets in denen Werte ermittelt werden aus einer Liste.
Die so ermittelten Werte möchte ich gerne per VBA in einem sheet "Übersicht" addieren und zusammengefasst darstellen.
Beispiel: Tabellenblatt 1
A - B - C - D
12 68 12 12
Tabellenblatt 2:
A - B - C - D
80 16 5 31
Tabellenblatt Übersicht:
A - B - C - D
92 84 17 33
Hoffe das verständlich erklärt zu haben.
Und nun warte ich da ich eh nicht mehr richtig fündig werde im world wide web.
Grüße
Bea
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Lösung-Werte zusammenfassen
17.07.2016 16:49:19
Bea
Hallo liebe Gemeinde,
ich weiß das meine Anfrage simpel ist, aber ich finde einfach den Einstieg nicht.
Hab wirklich schon hunderte von Threads gelesen, die unter "zusammenfassen" zu finden waren, aber nichts passendes gefunden.
Darum meine Bitte mir zumindest den Einstieg zu ermöglichen.
Meist bastele ich den Rest dann irgendwie zusammen...mehr oder weniger :-)
Tabellenblätter 1 bis 5
Spalten A bis D
Zeilen 2 is 6
in einem neuen Blatt "Übersicht" addieren
in den gleichen Spalten und Zeilen wie in den Tabellenblättern 1 bis 5
Danke und Grüße
Anzeige
zusammenfassen mit Pivot oder
17.07.2016 17:08:02
MB12
Hallo Bea,
du schreibst nicht, wie!! du zusammenfassen möchtest
Beispieldatei mit gewünschtem Ergebnis wäre sinnvoll.
Gruß,
Margarete
AW: zusammenfassen mit Pivot oder
17.07.2016 17:13:28
Bea
Hi Margarete,
in einem Blatt "Übersicht" in dem die gleichen Zeilen- und Spaltenanzahl ist, somit fast (minimale Abweichungen) identisch zu den Blättern welche die Werte enthalten.
Mit ner Pivot habe ich es bisher gemacht, doch nun ist es zu unübersichtlich da es zu viele Werte gibt, die addiert und gelistet werden müssen.
Gruß
Bea
Anzeige
ohne VBA
17.07.2016 17:15:34
Michael
Hi Bea,
dafür addierst Du mit einer schlichten Formel, die Du mit der Maus zusammenklickst:
- Gehe in die Übersicht und dort in A2
- gib ein = ein
- wechsle auf Tabelle1
- klicke die betreffende Zelle an
- gib ein + ein
und wiederhole das für alle Tabellenblätter - beim letzten gibst Du dann kein + ein, sondern drückst Enter.
Für die ersten beiden Blätter sieht das dann z.B. so aus: =Tabelle1!A2+Tabelle2!A2
Die Formel kopierst Du schließlich einfach auf den gewünschten Bereich (z.B. A2:D6)
Im Menüband unter "Daten" gibt es im Bereich "Datentools" auch den Dialog "Konsolidieren", das kannst Du ja mal recherchieren.
Schöne Grüße,
Michael
Anzeige
AW: ohne VBA
17.07.2016 17:21:57
Bea
Hallo Michael,
wenn das mal so einfach wäre.
Es sind derzeit 36 Mappen, mit einer unterschiedlichen Anzahl von Tabellenblätter, für jede Mappe brauche ich eine Übersicht.
Mal sind es nur 4 Tabellenblätter, dann wäre die Formellösung auch problemlos machbar. Nur bei großen Abteilungen habe ich u.U. 50 Tabellenblätter pro Mappe.
Und da ich die alle alleine anpassen müsste finde ich das echt schwierig. Die Spalten liegen auch nicht nebeneinander und die Zeilen, welche die zu addierenden Werte enthalten liegen auch nicht unbedingt untereinander. Daher kommt eigentlich nur ne VBA lösung in Frage.
Aber danke dir sehr und Grüße
Bea
Anzeige
tja, wenn das so ist,
17.07.2016 17:36:04
Michael
Bea,
warum sagst Du dann eingangs, es geht um A2:D6 mit 5 Blättern?
Die Anzahl der Tabellenblätter ist nicht das Thema, das geht mit Schleife, ob es 5 oder 50 sind.
Nur: woher soll Excel wissen, welche Spalten bzw. Zeilen "interessant" sind?
Da gibt es mehrere Möglichkeiten: nach Überschriften in Spalten/Zeilen suchen, vorab pro Datei eine "Struktur" festlegen, die dann ausgelesen wird usw.
Wie stellst Du Dir das vor?
Nochmal zur Klärung: die "Übersicht" soll in jeder Datei getrennt erstellt werden? So daß das Makro jede Datei öffnet, die Übersicht anlegt und durchrechnet und die Datei dann speichert?
Ich fürchte, ohne anonymisierte Beispieldatein ist die Fragestellung zu schwammig.
Hm. Eine mit überschaubarem Aufwand zu programmierende Geschichte wäre, wenn Du die Übersicht jeweils händisch anlegst und die Zellen, die summiert werden sollen, irgendwie "markierst", indem Du z.B. "#hier" reinschreibst oder -123.
Schöne Grüße,
Michael
Anzeige
AW: tja, wenn das so ist,
17.07.2016 17:50:56
Bea
Hallo Michael,
ich versuche gerade eine Datei so zu reduzieren das ich sie hochladen kann.
Es sind blöderweise soviele Formeln darin, das ich immer wenn ich was lösche beim speichern neu berechnet wird.
Und das dauert arg lang.
Aber ich versuchs :-)
Aber danke die erstmal.
Gruß
Bea
Anzeige
Optionen/Formeln/Berechnung manuell owT
17.07.2016 17:56:20
Michael
AW: VBA Lösung-Werte zusammenfassen
17.07.2016 17:47:04
Christian
Hi, vermutlich macht das folgende Skript das was du möchtets. Ob eine VBA-Lösung hier
sinnvoll ist steht auf einem anderen Blatt :-)
Option Explicit
Option Base 1
Sub Addieren()
Dim i As Integer
Dim wb As Workbook
Dim intMaxSheet
Dim myArr As Variant
Dim r, c As Integer
ReDim myArr(1 To 6, 1 To 4)
Set wb = ThisWorkbook
intMaxSheet = 5
For i = 1 To intMaxSheet
For r = LBound(myArr) To UBound(myArr)
For c = LBound(myArr, 2) To UBound(myArr, 2)
myArr(r, c) = myArr(r, c) + wb.Worksheets("Tabelle" & i).Cells(r, c).Offset(1,  _
0).Value
Next c
Next r
Next i
wb.Worksheets("Übersicht").Range("A2:D6").Value = myArr
End Sub
Beste Grüße,
Christian
Anzeige
AW: VBA Lösung-Werte zusammenfassen
17.07.2016 18:51:45
Bea
https://www.herber.de/bbs/user/107071.xlsx
Hallo und vielen Dank für die Mühe bis dahin.
Habe nun mal eine Beispieldatei gebastelt die in etwa eine Mappe darstellt. Wie gesagt, wäre es nur eine, würde ich immer die Formellösung bevorzugen. Da es aber 36 sind, die jeweils unterschiedlich viele Tabellenblätter beinhalten können ist das schwer umsetzar. Ich kann auch leider die zu berechnenden (addierenden) Werte nicht aneinanderreihen. Es ist eine Vorlage die nicht verändert werden kann.
Ein weiteres Problem ist die Größe einer Mappe. Es sind pro Tabellenblatt ca. 1200 Formeln (Summenprodukt). Und das Berechnen dauert echt lang. Weitere Formeln lasse ich in einem Makro berechnen.
Daher wäre ich froh um eine Lösung per VBA.
@Christian - dein Code habe ich angepasst, doch er bleibt beim Offset hängen.
Ich habe alle Varianten bereist probiert, doch jedes mal stoppt es dort. Woran kann das liegen?
Grüße
Bea
Anzeige
Vorschlag
17.07.2016 19:49:57
Michael
Hi Bea,
da die Bereiche nicht an der gleichen Position sind, habe ich's mir einfach gemacht: Du gibst einfach eine Liste der Bereiche ein, und zwar jeweils, wo sie in der Übersicht sind und wo in den Blättern.
Ohne Sicherheitsabfrage, ob die Bereiche gleich groß sind, dann so:
Option Explicit
Sub zamzaehlen()
Dim blatt As String
Dim sh As Worksheet
Dim maxZ As Long, i As Long, s As Long, z As Long
Dim b ' wie Bereiche
Dim w0, wb ' wie Werte; 0 = Übersicht, b wie Blatt
blatt = Range("M3")
maxZ = Range("M" & Rows.Count).End(xlUp).Row
If maxZ 
Die Sicherheitsabfrage sind ja nur ein, zwei Zeilen, aber ich muß aus dem Haus.
Die Datei mit den nötigen Angaben zum Angucken und einer Plausibilitätsprüfung:
https://www.herber.de/bbs/user/107072.xlsm
Schöne Grüße,
Michael
P.S.: Vergiß nicht, die Berechnung wieder einzuschalten oder nimm F9...
Anzeige
AW: Vorschlag
17.07.2016 21:15:47
Bea
Hallo Ihr,
Danke !!!
Das habe ich gesucht.
Beide Lösungen sind perfekt!!!
Bin restlos begeistert - denn ich werde das nie kapieren :-(
Ihr seid echt super!
Grüße und schönen Restsonntag
Bea
AW: Vorschlag
17.07.2016 21:47:48
Bea
Hallo Michael,
ich traue mich ja fast gar zu fragen, aber ich glaube (nein, ich weiß es) ich komme wieder nicht weiter.
Option Explicit
Sub zamzaehlen()
Dim blatt As String
Dim sh As Worksheet
Dim maxZ As Long, i As Long, s As Long, z As Long
Dim b ' wie Bereiche
Dim w0, wb ' wie Werte; 0 = Übersicht, b wie Blatt
blatt = Range("M3")
maxZ = Range("M" & Rows.Count).End(xlUp).Row
If maxZ 
Fehlermeldung: Die Methode Range für das Objekt _Global ist fehlgeschlagen
Das passiert aber nur wenn ich es anpasse. Lasse ich es wie bei dir, funktioniert es.
...puh, so'n mist.
Kannst du mir nochmal helfen?
Danke und Grüße
Bea
Anzeige
Was für Werte?
18.07.2016 14:39:08
Michael
Hi Bea,
im Nachhinein ist mir noch ein Schwachpunkt eingefallen, den ich nicht berücksichtigt hatte: die Zuweisung erfolgt momentan NUR zu einem Array (das ist NICHT die Zeile, in der es hakelt), wenn der Bereich MEHR als eine Zelle umfaßt; wenn es sich um eine einzelne Zelle handelt (also z.B. C3), ist das Ergebnis kein Array, sondern ein einzelner Wert: dann kommt spätestens bei ubound(wb(i)) ein Fehler.
Warum bei Dir bereits vorher ein Fehler kommt, könnte daran liegen, daß Du mehrere Bereiche in einer Zelle zusammenfaßt. Arrays können nur aus EINEM zusammenhängenden Bereich erzeugt werden.
D.h. "D2:E4" ist unproblematisch, aber eine "normale" Range-Zuweisung wie z.B.
Range("A2:D4,E6:F8") mit mehreren Bereich geht bei Arrays NICHT.
Das müßtest Du dann in zwei Zeilen schreiben: A2:D4 und E6:F8 - Zeilen hast Du ja beliebig viele zur Verfügung.
Also, ich habe jetzt den Fall einer EINZELNEN Zelle berücksichtigt und getestet. Das mit dem nicht zusammenhängenden Bereich wäre mehr Aufwand als die Sache wert ist.
Makro:
Option Explicit
Sub zamzaehlen()
Dim blatt As String
Dim sh As Worksheet
Dim maxZ As Long, i As Long, s As Long, z As Long
Dim b ' wie Bereiche
Dim w0, wb ' wie Werte; 0 = Übersicht, b wie Blatt
blatt = Range("M3")
maxZ = Range("M" & Rows.Count).End(xlUp).Row
If maxZ  0 Or _
InStr(b(i, 2), ",") > 0 Then
MsgBox "Komma vorhanden: geht leider nicht mit mehreren Bereichen in Einem."
Exit Sub
End If
If (Range(b(i, 1)).Rows.Count  Range(b(i, 2)).Rows.Count) Or _
(Range(b(i, 1)).Columns.Count  Range(b(i, 2)).Columns.Count) Then
MsgBox "Zeilen und/oder Spalten unterschiedlich"
Exit Sub
End If
Next
' ************* BEVOR was geleert wird
ReDim w0(0 To UBound(b))
ReDim wb(0 To UBound(b))
For i = 1 To UBound(b)
Range(b(i, 1)).ClearContents
w0(i) = Range(b(i, 1))
Next
For Each sh In Worksheets
If Mid(sh.Name, 1, Len(blatt)) = blatt Then
For i = 1 To UBound(b)
wb(i) = sh.Range(b(i, 2))
If sh.Range(b(i, 1)).Count = 1 Then
w0(i) = w0(i) + wb(i)       ' einzelne Zelle
Else
For z = 1 To UBound(wb(i))  ' Schleife für mehrere = Array
For s = 1 To UBound(wb(i), 2)
w0(i)(z, s) = w0(i)(z, s) + wb(i)(z, s)
Next
Next
End If
Next
End If
Next
For i = 1 To UBound(b)
Range(b(i, 1)) = w0(i)
Next
End Sub

Datei: https://www.herber.de/bbs/user/107085.xlsm
Sollte bei Dir noch ein Fehler auftreten, kopiere bitte die Liste der Bereiche mal hier rein.
Schöne Grüße,
Michael
Anzeige
AW: Was für Werte?
18.07.2016 17:26:16
Bea
Hallo Michael,
darauf bin ich nun auch gekommen.
Macht aber nichts, habe die Spalten einzeln ausgewählt und es klappt hervorragend.
So können es auch andere Kollegen nachvollziehen.
Ih danke dir nochmals, denn das ist mir auch noch bei einer anderen Gelegenheit sehr hilfreich.
Schönen Abend noch.
Grüße
Bea
Anzeige
sehr schön, das freut mich,
18.07.2016 17:39:32
Michael
Bea,
schöne Grüße zurück & happy exceling,
Michael
AW: VBA Lösung-Werte zusammenfassen
17.07.2016 20:30:53
Christian
Hallo Bea,
Michael hat dir ja schon eine wirklich ausgefuchste Lösung geliefert!
Hier nur der Vollständigkeit halber meine Bastelvariante, angepasst auf deine Musterdatei.
LG; Christian
Option Explicit
Option Base 1
Sub Addieren()
Dim i As Integer
Dim wb As Workbook
Dim ws As Worksheet
Dim intMaxSheet
Dim myArr As Variant
Dim r, c As Integer
'' Bereich C2:F8
ReDim myArr(2 To 8, 3 To 6)
Set wb = ThisWorkbook
intMaxSheet = 5
For Each ws In wb.Worksheets
If Not ws.Name = "Übersicht" Then
For r = LBound(myArr) To UBound(myArr)
For c = LBound(myArr, 2) To UBound(myArr, 2)
myArr(r, c) = myArr(r, c) + ws.Cells(r, c).Value '.Offset(1, 0).Value
Next c
Next r
End If
Next
'Werte Schreiben in Blatt 'Übersicht'
wb.Worksheets("Übersicht").Range("C6:F12").Value = myArr
''Bereich D19:F21
ReDim myArr(19 To 21, 4 To 6)
For Each ws In wb.Worksheets
If Not ws.Name = "Übersicht" Then
For r = LBound(myArr) To UBound(myArr)
For c = LBound(myArr, 2) To UBound(myArr, 2)
myArr(r, c) = myArr(r, c) + ws.Cells(r, c).Value '.Offset(1, 0).Value
Next c
Next r
End If
Next
'Werte Schreiben in Blatt 'Übersicht'
wb.Worksheets("Übersicht").Range("D23:F25").Value = myArr
End Sub

Anzeige
AW: VBA Lösung-Werte zusammenfassen
17.07.2016 21:17:56
Bea
Hallo,
Danke!
Das ist perfekt.
Kann sogar ich "umbasteln".
Ich werde das nie lernen...:-(
Vielen Dank nochmal und schönen Restsonntag
Gruße
Bea
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA-Lösung zum Zusammenfassen von Werten in Excel


Schritt-für-Schritt-Anleitung

Um Werte aus mehreren Tabellenblättern in Excel zusammenzufassen, kannst du ein VBA-Skript verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf "Einfügen" und wähle "Modul", um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Option Explicit
    Option Base 1
    Sub Addieren()
       Dim i As Integer
       Dim wb As Workbook
       Dim ws As Worksheet
       Dim intMaxSheet As Integer
       Dim myArr As Variant
       Dim r, c As Integer
    
       ' Bereich definieren
       ReDim myArr(2 To 8, 3 To 6)
       Set wb = ThisWorkbook
       intMaxSheet = 5
    
       For Each ws In wb.Worksheets
           If Not ws.Name = "Übersicht" Then
               For r = LBound(myArr) To UBound(myArr)
                   For c = LBound(myArr, 2) To UBound(myArr, 2)
                       myArr(r, c) = myArr(r, c) + ws.Cells(r, c).Value
                   Next c
               Next r
           End If
       Next
    
       ' Werte in die Übersicht schreiben
       wb.Worksheets("Übersicht").Range("C6:F12").Value = myArr
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro "Addieren" auswählst und auf "Ausführen" klickst.

Mit diesem Skript kannst du die Werte aus bis zu 5 Tabellenblättern in dein "Übersicht"-Blatt zusammenfassen. Du kannst die intMaxSheet-Variable anpassen, wenn du mehr Tabellenblätter hinzufügen möchtest.


Häufige Fehler und Lösungen

  • Fehler: "Die Methode Range für das Objekt _Global ist fehlgeschlagen"

    • Lösung: Überprüfe, ob du den richtigen Bereich in deiner Excel-Datei angegeben hast. Stelle sicher, dass die Zelle, auf die du zugreifen möchtest, tatsächlich existiert und dass der Name der Tabellenblätter korrekt ist.
  • Fehler beim Offset

    • Lösung: Achte darauf, dass du die Offset-Funktion korrekt anwendest. Wenn du die Werte nicht aneinanderreihen kannst, stelle sicher, dass die Daten in den richtigen Zellen vorhanden sind.

Alternative Methoden

Falls du keine VBA-Lösung verwenden möchtest, kannst du auch die Formel-Methode nutzen. Hier ist eine kurze Anleitung:

  1. Gehe in die "Übersicht".
  2. In Zelle A2 gib folgende Formel ein:
    =Tabelle1!A2 + Tabelle2!A2 + Tabelle3!A2 + ...
  3. Ziehe die Formel nach unten und rechts, um die Werte in den anderen Zellen zu summieren.

Diese Methode ist jedoch weniger flexibel, besonders wenn du viele Tabellenblätter hast.


Praktische Beispiele

Stell dir vor, du hast folgende Werte in deinen Tabellenblättern:

  • Tabellenblatt 1:

    A   -  B  -   C   -  D 
    12   68    12    12
  • Tabellenblatt 2:

    A  -   B   -  C   -  D
    80    16     5    31

Nach dem Ausführen des Makros erscheinen die addierten Werte in der "Übersicht":

  • Übersicht:
    A  -  B  -  C  -  D
    92   84   17   43

Tipps für Profis

  • Verwende die Application.ScreenUpdating = False und Application.Calculation = xlCalculationManual vor dem Ausführen des Makros, um die Berechnungsgeschwindigkeit zu erhöhen, besonders bei großen Datenmengen.
  • Teste deinen Code immer erst mit einer kleinen Menge an Daten, bevor du ihn auf große Tabellen anwendest.
  • Halte deine Daten ordentlich und verwende klare Überschriften, um die Identifizierung der Werte zu erleichtern.

FAQ: Häufige Fragen

1. Kann ich das VBA-Skript für mehr als 5 Tabellenblätter anpassen? Ja, du kannst die intMaxSheet-Variable erhöhen, um mehr Tabellenblätter zu berücksichtigen.

2. Was passiert, wenn die Zellbereiche unterschiedlich sind? Das VBA-Skript geht davon aus, dass die Zellbereiche gleich sind. Wenn dies nicht der Fall ist, musst du das Skript entsprechend anpassen, um die spezifischen Bereiche zu definieren.

3. Wie kann ich Werte in einer bestimmten Reihenfolge zusammenfassen? Du kannst die Zellen, die du zusammenfassen möchtest, manuell in das Skript eingeben oder eine Liste der Bereiche erstellen, die du addieren möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige