Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1692to1696
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Addition von Werten aus bestimmten Tabellenblätter

Addition von Werten aus bestimmten Tabellenblätter
27.05.2019 17:31:11
Werten
Liebe Community,
ich habe mich heute hier angemeldet in der Hoffnung, dass ihr mir helfen könnt.
Es geht um folgendes: Mein Excel File hat etliche Sheets, einige davon beginnen immer mit FM_
Genau um die geht es. Jedes dieser Sheets hat am unteren Ende einen Output Raster. Ich muss in einem Output Sheet den Raster aller FM_ Sheets addieren. Das Problem dabei ist, dass der Output-Raster in den FM_ Sheets nicht immer in der selben Zeile beginnt. Deshalb dachte ich, ich muss mit einer match Formal arbeiten. Darum habe ich in der Zeile, in der der Output-Raster beginnt "GuV" eingefügt als Kriterium.
Ich habe mich heute ewig gespielt und bin leider zu keiner Lösung gekommen. Könnt ihr mir vl helfen?
Anbei mein bisheriger Code-Versuch:

Sub GuV_Output()
Dim Summe As Double
Dim Ws As Worksheet
Summe = 0
For Each Ws In ActiveWorkbook.Worksheets
If Ws.Name = "FM_*" Then
With Application.WorksheetFunction
Summe = Summe + Ws.Cells(.Match("GuV", ActiveSheet.Range("B1:B900"), 0), 8).Value
End With
End If
Next Ws
Worksheets("GuV Output").Range("G6").Value = Summe
End Sub

Danke u beste Grüße
Patrick

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Addition von Werten aus bestimmten Tabellenblätter
27.05.2019 17:59:24
Werten
Moin Patrick,
das geht wahrscheinlich auch ohne VBA.
Aber wie auch immer, du wirst gewiss mehr Hilfsbereitschaft finden, wenn du eine (anonymisierte) kleine Muster-xlsx als Anhang zur Verfügung stellst. Vielleicht sogar mit händischem Wunsch-Ergebnis?
Gruß
Günther
AW: Addition von Werten aus bestimmten Tabellenblätter
27.05.2019 18:01:47
Werten
Hallo Patrick,
Ersetze mal
..., ActiveSheet.Range("B...
durch

..., Ws.Range("B...
Gruess Hansueli
AW: Addition von Werten aus bestimmten Tabs
27.05.2019 18:05:25
Werten
Hi,
ohne VBA ginge es wie folgt z.B.
In D1 bis D... listest Du alle Blattnamen auf.
In meinem Beispiel sind es 4 Blätter (als D1 bis D4 sind entsprechend mit den Blattnamen gefüllt).
Dazu dann diese (Array-)Formel, die jedes Blatt auf "FM*" überprüft, in B1:B900 den Eintrag "GuV" sucht und dann den Wert aus Spalte H in der gefundenen Zeile addiert.
{=SUMME((T(INDIREKT("'"&MTRANS(D1:D4)&"'!B"&ZEILE(1:900)))="GuV")*ISTZAHL(FINDEN("FM_";MTRANS(D1:D4)) )*N(INDIREKT("'"&MTRANS(D1:D4)&"'!H"&ZEILE(1:900)))) }
VG, Boris
Anzeige
Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 09:03:33
Werten
Liebe Community,
danke für eure Antworten. Ich glaube ich bin schon ein bisschen weiter nun!
@Günther: alles klar, werde ich mir für die Zukunft merken! Danke für den Hinweis!
@Boris: Deine Lösung sieht interessant aus. Allerdings ist das Problem, dass das File quasi „lebt“ und ständig neu befüllt wird. Deshalb auch evt neue Reiter eingefügt werden. Hier müsste ich dann bei Adaptionen immer die Tabellennamen auslesen lassen und die Formeln anpassen oder?
Ich habe zur besseren Veranschaulichung nun ein kleines .xlsx nachgebaut. Wie bereits erwähnt befindet sich in den FM_ Reitern am Ende immer ein Output-Raster, welches aber in unterschiedlichen Zeilen beginnen kann. Die Struktur der Output-Raster ist aber sowohl in den FM_ - Sheets, als auch im Output Sheet immer ident. Im Output-Sheet in Zelle H5 soll das Makro die Formel
=FM_1!H15+FM_2!H12+FM_3!H42
eingeben.
Das heißt der Code muss durch jeden Reiter gehen – wenn dieser mit FM-beginnt die Zeile suchen in der in Spalte A „GuV1“ steht und dann in dieser Zeile in Spalte 8 den Bezug für die Additionsformel herstellen. Dieser Vorgang soll sich dann sooft wiederholen, bist der komplette Raster voll ist.
Das wäre die perfekte Lösung. Falls es mit der Summenformel nicht geht, wäre mir auch mit der hart-kopierten Summen in den Zellen des Output Sheets sehr geholfen.
Hier der Link zu meinem .xlsx File: https://www.herber.de/bbs/user/130074.xlsx
Ich hoffe ihr könnte mir hier weiterhelfen! Ein riesiges Dankeschön bereits im Voraus!
Beste Grüße
Patrick
Anzeige
AW: Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 12:56:09
Werten
Hi,
für die „lebende“ Datei gibt es natürlich auch eine Automatik-Lösung. Mehr dazu, wenn Du das grundsätzlich überhaupt in Erwägung ziehst.
VG Boris
AW: Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 13:07:35
Werten
Hi Boris,
grundsätzlich bin ich an jeder Art der Lösung interessiert. Das Problem ist nur, dass ich beim Versuch die Methode nachzuturnen einen Fehlermeldung bekommen habe ^^
Ich kann dem Aufbau der Formel leider nicht 100%ig folgen.
LG
Patrick
Just for fun...
28.05.2019 20:06:19
{Boris}
Hi,
hier noch eine rein formelbasierte Lösung. Da die Formeln ziemlich rechenintensiv sind, habe ich sie zunächst auf 200 Zeilen eingekürzt (ZEILE(1:200)). Aber auch das ist viel Rechnerei, weshalb die automatische Berechnung besser ausgestellt werden sollte.
Aber Du kannst dann immer Blätter dazufügen.
Im Einzelnen:
Definieren den Namen x mit Bezug auf:
=ARBEITSMAPPE.ZUORDNEN(1+0*JETZT())
Schreibe im Blatt "Output" in X1 die Formel zur Auflistung aller Blätter
=INDEX(x;ZEILE())
und kopiere sie so weit runter, wie es irgendwann maximal Tabellenblätter geben kann (da erscheint dann am Ende ein paar mal #BEZUG! - das muss so sein!).
Das Blatt "Output" bleibt dabei in der Datei immer das LETZTE (also ganz rechts).
Jetzt definiere den Namen y mit Bezug auf:
=INDEX(Output!$X$1:INDEX(Output!$X:$X;ANZAHL2(Output!$X:$X)-1-ZÄHLENWENN(Output!$X:$X;"#BEZUG!"));0)
Jetzt fülle die Zellen im Blatt "Output" in A5:A51 mit Leben:
A5: GuV 1
A6: GuV 2
...
A51: GuV 47
Dann diese ARRAY(!)Formel in Output!H5:
{=SUMME((T(INDIREKT("'"&MTRANS(y)&"'!A"&ZEILE($1:$200)))=$A5)*ISTZAHL(FINDEN("FM_";MTRANS(y)) ) *N(INDIREKT("'"&MTRANS(y)&"'!Z"&ZEILE($1:$200)&"S";0))) }
und sowohl runter bis H51 als auch nach rechts bis Spalte T kopieren.
That`s it.
VG, Boris
Anzeige
AW: Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 11:45:26
Werten
Liebe Community,
danke für eure Antworten. Ich glaube ich bin schon ein bisschen weiter nun!
@Günther: alles klar, werde ich mir für die Zukunft merken! Danke für den Hinweis!
@Boris: Deine Lösung sieht interessant aus. Allerdings ist das Problem, dass das File quasi „lebt“ und ständig neu befüllt wird. Deshalb auch evt neue Reiter eingefügt werden. Hier müsste ich dann bei Adaptionen immer die Tabellennamen auslesen lassen und die Formeln anpassen oder?
Ich habe zur besseren Veranschaulichung nun ein kleines .xlsx nachgebaut. Wie bereits erwähnt befindet sich in den FM_ Reitern am Ende immer ein Output-Raster, welches aber in unterschiedlichen Zeilen beginnen kann. Die Struktur der Output-Raster ist aber sowohl in den FM_ - Sheets, als auch im Output Sheet immer ident. Im Output-Sheet in Zelle H5 soll das Makro die Formel
=FM_1!H15+FM_2!H12+FM_3!H42
eingeben.
Das heißt der Code muss durch jeden Reiter gehen – wenn dieser mit FM-beginnt die Zeile suchen in der in Spalte A „GuV1“ steht und dann in dieser Zeile in Spalte 8 den Bezug für die Additionsformel herstellen. Dieser Vorgang soll sich dann sooft wiederholen, bist der komplette Raster voll ist.
Das wäre die perfekte Lösung. Falls es mit der Summenformel nicht geht, wäre mir auch mit der hart-kopierten Summen in den Zellen des Output Sheets sehr geholfen.
Hier der Link zu meinem .xlsx File: https://www.herber.de/bbs/user/130074.xlsx
Ich hoffe ihr könnte mir hier weiterhelfen! Ein riesiges Dankeschön bereits im Voraus!
Beste Grüße
Patrick
Anzeige
AW: Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 12:04:20
Werten
Hi
prinzipell passt dein gezeigter Code ja schon, den Fehler (soweit er aus deinem Eingangsbeitrag ersichtlich ist) hat dir HansUeli ja gezeigt.
wenn man sich deine Beispieldatei anschaut, dann müsstest du weiterhin korrigieren dass:
1. du dir darüber klar werden musst, in welche Spalte das "GuV" stehen soll (A oder B)
2. das "GuV" in der Zeile stehen muss, welche du aufsummieren willst, und zwar genau der Text, nach welchem du im Makro suchst. (in den anderen Zeilen muss was anderes stehen)
damit der Wert immer aktuell ist, könntest du den Code zum aufsummieren im Activate-Event des Tabelleblatts "OutPut" ausführen lassen.
Gruß Daniel
Anzeige
AW: Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 13:03:38
Werten
HI Daniel,
ich habe den Code nun angepasst an das hochgeladene .xlsx und auch die Korrektur von HansUeli eingearbeitet (@HansUeli - danke dafür!).
Nur leider schreibt er mir in der Zelle H5 des Output-Sheets 0 hinein, obwohl die Summe eigentlich 3 sein sollte.
Hier nochmal mein Code:

Sub GuV_Output()
Dim Summe As Double
Dim Ws As Worksheet
For Each Ws In ActiveWorkbook.Worksheets
If Ws.Name = "FM_*" Then
With Application.WorksheetFunction
Summe = Summe + Ws.Cells(.Match("Guv 1", Ws.Range("A1:A900"), 0), 8).Value
End With
End If
Next Ws
Worksheets("Output").Range("H5").Value = Summe
End Sub
Wisst ihr woran das liegen könnte?
LG
Patrick
Anzeige
AW: Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 13:08:02
Werten
HI
der "="-Operator kann keine Jokerzeichen verarbeiten.
dh entweder:
If Left(Ws.Name, 3) = "FM_" Then
oder
If Ws.Name Like "FM_*" Then
Gruß Daniel
AW: Addition von Werten aus bestimmten Tabellenblätter
28.05.2019 14:54:51
Werten
Hey Daniel
danke!! Auf das wäre ich nicht gekommen.
Ich habe mittlerweile den Code auch erweitert um den ganzen Raster auszufüllen. Funktioniert super, danke euch!
LG
Patrick
Sub GuV_Output()
Dim Summe As Double
Dim Ws As Worksheet
Dim x As Integer
Dim y As Integer
Dim x_max As Integer
x_max = Worksheets("GuV Master").Range("A2").Value
For x = 0 To x_max
For y = 0 To 12
Application.ScreenUpdating = False
For Each Ws In ActiveWorkbook.Worksheets
If Ws.Name Like "FM_*" Then
With Application.WorksheetFunction
Summe = Summe + Ws.Cells(.Match("Guv 1", Ws.Range("A1:A900"), 0) + x, 8 + y).Value
End With
End If
Next Ws
Worksheets("GuV Output").Cells(4 + x, 8 + y).Value = Summe
Summe = 0
Next
Next
End Sub

Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige