Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mittelwert über mehrere Tabellenblätter berechnen
#1
Wink 
Hi Leute,


leider reichen meine Excelkenntnisse nicht aus, um folgendes Problem zu lösen. Wäre super, wenn mir jmd. dabei helfen könnte. 

Fragestellung ist die Folgende:
- Ich habe ein Tabellenblatt 1 mit Ländernamen und zwei Jahreszahlen (Startjahr und Endjahr). Die Jahreszahlen beziehen sich jeweils auf ein Land

- Außerdem habe ich weitere Tabellenblätter (2-X), in denen jeweils eine Liste mit Ländernamen und Werten für eine bestimmte makroökonomische Variable (zB Bruttoinlandsprodukt, BIP) gegeben ist, jeweils ein Wert pro Land und Jahr

Mein Ziel: 
- Ich möchte in Tabellenblatt 1 neben den Ländernamen den Mittelwert für jede Variable in den Tabellenblättern 2-X bestimmen über den gegebenen Zeitraum (Startjahr bis Endjahr)
--> zB steht als erster Eintrag in Tabellenblatt 1: Deutschland (Spalte 1) mit Startjahr 1960 (Spalte 2) und Endjahr 1990 (Spalte 3). In der 4. Spalte soll dann zB der Mittelwert des BIP für diesen Zeitraum berechnet werden (auf Basis der Datengrundlage in Tabellenblatt 2, das BIP heißt).

- Bei zwei Ländern kann das noch leicht umgesetzt werden, allerdings ist meine "echte" Liste sehr viel länger mit hunderten Kombinationen von Länder und Zeiträumen und Duzenden Makrovariablen in den Tabellenblättern 2-X. Daher sollte die Lösung so konzipiert sein, dass in Tabellenblatt 1 eine neue Spalte eingefügt wird (zB BEV für Bevölkerung) und dann wird automatisch die Spalte durch den Bezug zum passenden Tabellenblatt BEV mit den Mittelwerten für alle Länder und Zeiträume befüllt.

Im Anhang ein Bsp.: 
.xlsx   Bsp._Länder.xlsx (Größe: 30,99 KB / Downloads: 4)

Ich bin dankbar für jeden Tipp zur Lösung des Problems  Blush
Antworten Top
#2
Hallo,

der folgende Code liefert anscheinend einen falschen Wert, aber als Ansatz sollte er genügend. D.h., das Debuggen überlasse ich dir.


Code:
Sub Main
dim WS as worksheet
dim WSF as worksheetfunction : set wsf = application.worksheetfunction
Vr = array("BIP", "BEV")
sheets("Berechnung").activate
'set WS = sheets("BIP")
V = 0 'Variable für BIP, BEV, 0 und 1
for i = 2 to cells(rows.count, 1).end(xlup).row
    for V = 0 to ubound(Vr)
    set WS = sheets(Vr(V))
    r = wsf.match(cells(i,1),WS.usedrange.columns(1),0)
    c = wsf.match(cells(i,2),WS.usedrange.rows(1),0)
    cells(i,4+V) = wsf.average(WS.range(WS.cells(r,c), WS.cells(r,c).offset(,cells(i,3)-cells(i,2)+1)
    next V
next i
End Sub


mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • barangaroo
Antworten Top
#3
Danke für die schnelle Hilfe? Kann man das Problem auch ohne VBA lösen?

Ich kann ja über VERGLEICH() und INDIREKT() die Position des Start- und des Endwertes für die Mittelwertberechnung finden lassen. Mein Problem ist nur, wenn ich zB weiß, dass der Startwert für BIP (Deutschland 1960) in Zeile 2 und Spalte 12 und der Endwert (Deutschland 1999) in Zeile 2 und Spalte 51 steht, wie kann ich dann den Mittelwert berechnen? Ich habe es schon mit ADRESSE() versucht, um dann in MITTELWERT() die Start- und Endposition der Werte zu haben. Funktioniert aber nicht. Ab da komme ich aber leider nicht mehr weiter...
Antworten Top
#4
Hi

In D2   =MITTELWERT(INDEX(BIP!$1:$1000;VERGLEICH($A2;BIP!$A$1:$A$1000;0);VERGLEICH($B2;BIP!$1:$1;0)):INDEX(BIP!$1:$1000;VERGLEICH($A2;BIP!$A$1:$A$1000;0);VERGLEICH($C2;BIP!$1:$1;0)))

und nach unten Kopieren.

Für E (BEV) musst die Formel den Blattnamen anpassen.
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • barangaroo
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste