Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Mittelwert über mehrere Tabellenblätter (Wichtig: bedingte Berechnung)





Frage

Hallo Zusammen! Ich habe eine Exceldatei erstellt, die Berechnungen über mehrere Tabellenblätter hinweg durchführt. Auf dem ersten Tabellenblatt findet die Berechnung statt. Auf den anderen Tabellenblättern befinden sich Werte, die ich im ersten Blatt verrechne. Wichtig ist, dass die Sache dynamisch erstellt ist, dass heißt, es wird jedes neue Tabellenblatt in die Berechnungen mit einbezogen! Zurzeit habe ich das Problem – vereinfacht dargestellt - so gelöst: Beispiel: Mittelwert (Berechnung auf dem 1. Blatt) der Zellen A1 jedes Tabellenblattes (außer 1. Blatt): Dim NameZweitesTabellenblatt As String Dim NameLetztesTabellenblatt As String NameZweites = Worksheets(2).Name NameLetztes = Worksheets(Worksheets.Count).Name Range("A1").Select ActiveCell.FormulaR1C1 = "= AVERAGE (´" & NameZweites & ":" & NameLetztes & "´!R[0]C[0])" >>> Diese Lösung ist leider nicht ganz ausreichend! Was ich brauche ist eine bedingte Berechnung. Zum Beispiel soll der Mittelwert nur solcher Tabellenblätter berechnet werden, die in der Zelle A2 WAHR stehen haben. Andere Tabellenblätter sollen von der Berechnung ausgeschlossen werden. Ich habe mir schon lange den Kopf zerbrochen, mir ist aber keine Lösung eingefallen, ohne dass die Dynamik verloren geht. Vielleicht hat von euch jemand eine Idee! Danke schon mal! Gruß Simon.

Antwort 1 von OmaDuck

Hallo,
meiner Meinung nach, kannst Du das nur in einer Schleife lösen. Anzahl der Worksheets = Anzahl der Schleifendurchläufe. Wenn A2=true eigenen Zähler erhöhen und Wert in array schreiben. Durchschnitt zu Fuß berechnen Zahlen im array addieren und durch den Zähler teilen.
Gruß
OmaDuck

Antwort 2 von Saarbauer

Hallo,

ich würde an deiner stelle auf dem Tabellenblatt 1
mir die Daten aus der Zelle A1 und A2 der übrigen Blätter übertragen und mit
=SUMMEWENN(Bereich ;"wahr";Summe_Bereich)
die Summen ermitteln und mit
=ZÄHLENWENN(Bereich ;"wahr")
die Anzahl ermitteln. Dermittelwert ist dann Summe / Anzahl

Gruß

Helmut

Antwort 3 von Simon!

Danke für eure Antworten!

Ich weiss leider nicht was ein Array ist (ich mach VBA erst seit 2 Wochen).

Ich hab’s jetzt so gelöst (Leider nicht ganz elegant):
Ich kopiere die Werte der TabBlätter in eine Spalte (Spalte C) des ersten Tabellenblatts, wenn A2 = WAHR. Damit habe ich alle Werte in einer Spalte stehen. Die Rechenoperation führe ich dann über Excel direkt durch (=MITTELWERT(C1:C1000).

Hier der Code:

Dim i As Byte
Dim a As Integer
Dim z As Integer

a = Worksheets.Count
z = 1

For i = 2 To a

If Worksheets(i).Range("B1").Value = "Wahr" Then

Worksheets(1).Range("C" & z).Value = Worksheets(i).Range("A1").Value

End If

z = z + 1

Next i


... Gruß Simon