Discussion:
Inhalte (in verschiedenen Zeilen) von Tabellenblättern addieren
(zu alt für eine Antwort)
Markus Löw
2007-10-14 14:26:41 UTC
Permalink
Hallo NG,

hab folgendes Problem:

Ich möchte den Inhalt von Tabelle1, Tabelle2, ... Tabelle12 in
Tabelle_Zusammenfassung addieren.
Leider geht die 3D-Funktion =SUMME(Tabelle1:Tabelle12!A4) nicht, daß
die Info immer in unterschiedlichen Zeilen anhand von Kundennummern
ausgelesen werden, die jeden Monat anders gerangt sind.

Tabelle Januar
A B
1 Kunde3 100
2 Kunde4 90
3 Kunde1 84

Tabelle Feb
A B
1 Kunde1 120
2 Kunde3 90
3 Kunde2 50

usw

Zusammenfassung
A B
1 Kunde 1 204
3 Kunde 3 190
2 Kunde 4 90
4 Kunde 2 50
Bisher hab ich mich mit einem immer länger werdenden SVerweis
beholfen, in dem dann für jeden Monat per Sverweis der Wert ausgelesen
und addiert wird.

Frage: Gibt es eine bessere Lösung (per Formel oder VBA)

Danke für eure Unterstützung
Gruß Markus
{Boris}
2007-10-14 14:50:41 UTC
Permalink
Hi Markus,
Post by Markus Löw
Ich möchte den Inhalt von Tabelle1, Tabelle2, ... Tabelle12 in
Tabelle_Zusammenfassung addieren.
Leider geht die 3D-Funktion =SUMME(Tabelle1:Tabelle12!A4) nicht, daß
die Info immer in unterschiedlichen Zeilen anhand von Kundennummern
ausgelesen werden, die jeden Monat anders gerangt sind.
Tabelle Januar
A B
1 Kunde3 100
2 Kunde4 90
3 Kunde1 84
Tabelle Feb
A B
1 Kunde1 120
2 Kunde3 90
3 Kunde2 50
usw
Zusammenfassung
A B
1 Kunde 1 204
3 Kunde 3 190
2 Kunde 4 90
4 Kunde 2 50
Bisher hab ich mich mit einem immer länger werdenden SVerweis
beholfen, in dem dann für jeden Monat per Sverweis der Wert ausgelesen
und addiert wird.
Frage: Gibt es eine bessere Lösung (per Formel oder VBA)
Du kannst eine dreidimensionale Summenformel mit Zusatzbedingung wie
folgt erzeugen:

=SUMMENPRODUKT(SUMMEWENN(INDIREKT("'Tabelle"&ZEILE($1:$12)&"'!
A:A");A1;INDIREKT("'Tabelle"&ZEILE($1:$12)&"'!B:B")))

Summiert die Spalte B der Blätter "Tabelle1" bis "Tabelle12", wenn
Spalte A mit dem Suchbegriff aus A1 übereinstimmt.
In diesem Fall müssen die Blattnamen indizierbar sein, was ich a)
immer empfehlen würde und b) bei Dir anscheinend eh der Fall ist. Es
geht auch ohne indizierbare Blattnamen, aber das macht die Sache
unnötig kompliziert.

--
Grüße Boris
Klaus "Perry" Pago
2007-10-14 15:23:22 UTC
Permalink
Hallo Boris,
Post by {Boris}
=SUMMENPRODUKT(SUMMEWENN(INDIREKT("'Tabelle"&ZEILE($1:$12)&"'!
A:A");A1;INDIREKT("'Tabelle"&ZEILE($1:$12)&"'!B:B")))
coole 3D-Formel vom Meister!

Gruß
Klaus
Eberhard Funke
2007-10-14 16:51:19 UTC
Permalink
Post by Klaus "Perry" Pago
Post by {Boris}
=SUMMENPRODUKT(SUMMEWENN(INDIREKT("'Tabelle"&ZEILE($1:$12)&"'!
A:A");A1;INDIREKT("'Tabelle"&ZEILE($1:$12)&"'!B:B")))
coole 3D-Formel vom Meister!
Daher sein Beiname: "Tastengott"
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Markus Löw
2007-10-14 20:44:41 UTC
Permalink
Hallo zusammen,

vielen Dank für eure schnelle Hilfe.
Speziell an Boris und an (mal wieder :-) an Thomas.
Werde mich morgen gleich mal drüber her machen, die Excelliste endlich
leserlich zu gestalten.

Gruß Markus
Markus Löw
2007-10-15 07:31:14 UTC
Permalink
Hallo Boris,
ich hab deine Formel ausprobiert. Alles Super

Sobald ich die Tabellenblätter (Tabelle1 bis z.b. Tabelle3) aber
umbenennen möchte (Umsatz_2007M1 usw) bekomme ich einen Fehler

Alexander hat mir den Link zur Formelsammlung gesandt. Hier steht
drin, wie man auch mit umbenannten Tabellenblätter eine 3D-Formel
einsetzt.
Ich hab dies jetzt versucht:

=SUMMENPRODUKT(SUMMEWENN(INDIREKT("'"&{"Umsatz_2007M1"."Umsatz_2007M2"."Umsatz_2007M3"}&ZEILE($1:$3)&"'!
A:A");A4;
INDIREKT("'"&{"Umsatz_2007M1"."Umsatz_2007M2"."Umsatz_2007M3"}&ZEILE($1:$3)&"'!
B:B")))

aber ich ich bekomme einen Bezugsfehler.

Hast du eine Lösung? Du hast sowas angedeutet.

Gruß
Markus
Klaus "Perry" Pago
2007-10-15 07:42:39 UTC
Permalink
"Markus L�w" <***@web.de> schrieb im Newsbeitrag news:***@e9g2000prf.googlegroups.com...
Hallo Boris,
ich hab deine Formel ausprobiert. Alles Super

Sobald ich die Tabellenblätter (Tabelle1 bis z.b. Tabelle3) aber
umbenennen möchte (Umsatz_2007M1 usw) bekomme ich einen Fehler

Hallo Markus,

du musst nur in Boris' Formel die Zeichenfolge Tabelle durch Umsatz_2007M
ersetzen. Die Durchnummerierung erfolgt automatisch durch ZEILE($1:$12).

Gruß
Klaus
Markus Löw
2007-10-15 07:55:30 UTC
Permalink
JIPPIIIII - Funktioniert.

Ihr da raussen, was würde ich nur ohne euch tun.


Markus

Thomas Ramel
2007-10-14 14:54:01 UTC
Permalink
Grüezi Markus

Markus Löw schrieb am 14.10.2007
Post by Markus Löw
Ich möchte den Inhalt von Tabelle1, Tabelle2, ... Tabelle12 in
Tabelle_Zusammenfassung addieren.
Leider geht die 3D-Funktion =SUMME(Tabelle1:Tabelle12!A4) nicht, daß
die Info immer in unterschiedlichen Zeilen anhand von Kundennummern
ausgelesen werden, die jeden Monat anders gerangt sind.
Tabelle Januar
A B
1 Kunde3 100
2 Kunde4 90
3 Kunde1 84
Tabelle Feb
A B
1 Kunde1 120
2 Kunde3 90
3 Kunde2 50
usw
Zusammenfassung
A B
1 Kunde 1 204
3 Kunde 3 190
2 Kunde 4 90
4 Kunde 2 50
Bisher hab ich mich mit einem immer länger werdenden SVerweis
beholfen, in dem dann für jeden Monat per Sverweis der Wert ausgelesen
und addiert wird.
Frage: Gibt es eine bessere Lösung (per Formel oder VBA)
Eine Pivot-Tabelle in einer externen Mappe klappt dann, wenn die
Spaltenüberschriften und der Aufbau der einzelnen Tabellenlbätter immer
gleich ist. Du kannst dann alle Blätter als Datenquelle der PT wählen und
so sehr komfortabel und flexibel auswerten.

Wenns denn die gleiche Mappe sein soll (besser wäre es in diesem Falle die
Liste in nur *einem* Tabellenblatt zu führen und die Auswertung dann direkt
anhand einer neu einzufügenden Datumspalte zu machen) könntest Du mit
SUMMEWENN() über alle Tabellenblätter arbeiten. In VBA umgesetzt kann das
dann wie folgt aussehen:

Public Function ZählenWennTabellen(Tab1 As String, _
Tab2 As String, _
Bereich As Range, _
Suchkriterium As String) As Double

'© ***@mvps.org / 09.01.2005
'Funktion zur Anwendung von ZÄHLENWENN() über mehrere Tabellenblätter
'Mit angegeben werden die Tabellenblattnamen von...bis,
'sowie die üblichen Parameter für ZÄHLENWENN()
'Zur automatischen Aktualisierung im Tabellenblatt den folgenden Term
'anhängen: +(0*JETZT()) und F9 drücken
'Also z.B. wie folgt: =ZählenWennTabellen(A1:A10;A1)+(0*JETZT())

Dim intI As Integer
Dim intJ As Integer
Dim intTab As Integer
Dim Wert As Double

If Suchkriterium = "" Then
ZählenWennTabellen = 0
Exit Function
End If

intI = Worksheets(Tab1).Index
intJ = Worksheets(Tab2).Index

For intTab = intI To intJ
Set Bereich = ActiveWorkbook.Worksheets(intTab) _
.Range(Bereich.Address)
Wert = Wert + Application.WorksheetFunction.CountIf _
(Bereich, Suchkriterium)
Next intTab
ZählenWennTabellen = Wert
End Function



Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-2]
Microsoft Excel - Die ExpertenTipps
Alexander Wolff
2007-10-14 14:52:54 UTC
Permalink
http://www.excelformeln.de/formeln.html?welcher=342
--
Moin+Gruss Alexander - MVP für MS Excel - www.xxcl.de - mso2000sp3 --7-2
Loading...