[Gelöst] Google Tabelle - Summe mit Bedingung aus "Vektoren"

UrinStein

chronische Wohlfühlitis
Hallo,

ich hab gerade ein etwas spezifischeres Problem mit Funktionen in einer Google-Tabelle. Ist wohl eher für Leute die gerne mit Excel arbeiten oder gar mit Google's Onlinevariante.
Wenn sich aber doch jemand finden sollte mit Tabellen-Kompetenz und vielleicht etwas Zeit mir zu helfen, würde ich mich sehr freuen. Ist nicht wirklich wichtig, aber es interessiert mich doch sehr, ob das nun geht und wie. :eek:

Jedenfalls geht es um diese Tabelle hier, wo ich eine Liste von Spielern habe, sowie deren Positionen in Spielen, welche sie zusammen gespielt haben.
Worum es mir hier geht, ist eine Normierung der Durchschnittsergebnisse jedes Spielers. Nicht bei jedem Spiel bedeutet Platz 3, dass man gut war, z.B. nicht bei einem Spiel, wo es nur drei Spieler gab. Ich möchte jedes Ergebnis umrechnen in das Äquivalent eines Spieles mit 10 Spielern. Die Mathematik ist daran noch der spaßige Teil gewesen:

Code:
=average((position[n]-1)/(players[n]-1))*9+1   // für das erste bis n-te Spiel

Mein erster Versuch, den man neben den Spielernamen auch sehen kann, war es alles per hand einzutragen:
Code:
=SUM((C13-1)/(C11-1); (D13-1)/(D11-1); (E13-1)/(E11-1))/COUNT(C13:Z13)*9+1
Lediglich die Anzahl an Spielen, an denen der Spieler teilgenommen hat, errechnet mir die COUNT-Funktion.
Ich hätte das gleiche sicher auch mit der Spielerzahl machen können, aber die will ich eh extra stehen haben und, dann gehts wohl doch sicher schneller.

Nun würde ich es aber gerne vollautomatisch haben, dass ich nur noch Ergebnisse in die Tabelle eintragen brauche, auf dass sie sich doch bitte selbst vervollständige. Das lässt sich prinzipiell ganz einfach mit Vektoren machen:
Code:
=SUM(ARRAYFORMULA((C13:Z13-1)/(C11:Z11-1)))/COUNT(C13:Z13)*9+1
Damit teile auch die 13. Reihe (minus eins) durch die 11. Reihe (minus eins) mindestens mal bis Z, was mehr als genug ist, und summiere dann alles auf. Das Problem ist: Die leeren Blöcke machen als Nullen das Ergebnis kaputt und ich muss exklusiv die Felder mit Zahlen summieren.

Google Tabellen haben keine Schleifen, in die man dann seine Bedingung mit reinbauen könnte, daher ab ichs auch shcon mit SUM(IF( und SUMIF( versucht, aber jedes Mal sagts mir, dass es nicht geparst werden kann.
Sowas in dem Sinne:
Code:
=SUMIF(C13:Z13; ">0"; ARRAYFORMULA((C13:Z13-1)/(C11:Z11-1)))/COUNT(C13:Z13)*9+1
SUMIF(Bereich; Kriterium; [Summe_Bereich])
Ich glaube ich hab vorhin ne Stunde damit verbracht Kommata statt Semikolons in SUMIF( zu setzen, aber jetzt gibt er mir zu der Funktion da, dass es sich beim Argument um einen Bereich handeln solle. Dabei tut es das doch, oder etwa nicht? o_O

Sollte jemand ne Idee oder gar Lösung haben, ich wäre sehr verbunden, sie zu hören (lesen). :D


Edit: Hab den Link zur Tabelle aktualisiert, danke ditto. Meld mich heut Abend nochmal, sry.
 
Zuletzt bearbeitet:
Dein Dokument ist ohne Anmeldung nicht einzusehen.
ist eine Normierung der Durchschnittsergebnisse jedes Spielers.
Dort soll was einfliessen? Punkte, Anzahl der gespielten Spiele, Spiele insgesamt, Tendenz?
Dazu müssen alle Daten vorliegen, gerade für die Tendenz. Excel bietet jede Menge Funktionen im Bereich Statistik, allerdings sind nur ganz wenige davon auch für Nicht-Akademiker geeignet.

Mögliche Funktionen in Excel: TREND, STEIGUNG, MITTELWERT

MfG
 
Dein Dokument ist ohne Anmeldung nicht einzusehen.
Mein Fehler, da war ich zu blöd das Dokument freizugeben, obwohl ich es versucht hatte...
Vielleicht hab ich stattdessen, das originale Dokument freigegeben. xD

Dort soll was einfliessen? Punkte, Anzahl der gespielten Spiele, Spiele insgesamt, Tendenz?
Scheinbar war ich auch zu blöd mich verständlich auszudrücken.

Sorry, ich schieb mal beides darauf, dass ich die Nacht davor durchgemacht hab. Ich versuchs nochmal:


In den Spalten habe ich die Ergebnisse der einzelnen Spieler und oben drüber die Anzahl des jeweiligen Spiels.
Die Einzelergbenisse der Spieler sieht man also jeweils in den Zeilen.

Was ich nun tun will ist diese mathematische Formel hier:
Code:
mittelwert((position[n]-1)/(spielerzahl[n]-1))*9+1   // für das erste bis n-te Spiel
Was die Formel macht, ist die Einzelerbenisse mit Hilfe der Spielerzahl des einzelnen Spiels umzurechnen, sodass man in jedem Spiel bis zu 10. Platz werden kann. Aus dem Letzten des jewiligen Spiels wird dann der Zehnte, der Erste bleibt wo er ist und der rest wird linear dazwischen angeordnet. Dreisatz eigentlich.

Mein Wunsch ist, dass sich das Ergebnis meiner Formel auf dem Dokument automatisch aktualisiert, wenn ich weitere Erbenisse eintrage. Dafür habe ich diese Funktion in meiner Tabelle ausprobiert:
Code:
=SUM(ARRAYFORMULA((C13:Z13-1)/(C11:Z11-1)))/COUNT(C13:Z13)*9+1   // Feld G12
Sie tut Folgendes (am Beispiel von Spieler 13):
1. Sie nimmt den Ergebnisverktor (Reihe 13) und subtrahiert 1 -> C13:Z13-1
2. Sie tut das Gleiche auch mit dem Spielerzahlvektor (Reihe 11) -> C11:Z11-1
3. Sie teilt Ergebnisse durch Spielerzahlen [COLOR="#AAC00"]-> (C13:Z13-1)/(C11:Z11-1)[/COLOR]
4. Sie nimmt die Einzelwerte des Erbgebnisvektors und errechnet -> SUM(ARRAYFORMULA( ... )
5. Sie zählt die Anzahl an Werten im Ergebnisvektor (Zeile 13, sprich die Anzahl der Spiele) und teilt das Ergebnis der Summe durch eben jene -> Sum (...) / COUNT(C13:Z13)
6. Zuletzt multipliziert sie mit 9 und addiert 1

Die Formel funktionert gut, solange ich sie auf Spalten C bis E beschränke, welche alle legitime Ergebnisse enthalten.
Über die gesamte Spalte jedoch wertet sie jede leere Feld als eine NULL, was in der Formel leider Gottes zu Zahlen führt, die allesamt in die Summe mit hinein addiert werden.


Ich habe nun auch versucht eine "Summe mit Bedingung" zu benutzen. Hier mal ein Link mit Erklärungen from Google himself.
Das Wichtigste: SUMIF(Bereich; Kriterium; [Summe_Bereich])
Code:
=SUMIF(C13:Z13; ">0"; ARRAYFORMULA((C13:Z13-1)/(C11:Z11-1)))/COUNT(C13:Z13)*9+1   // Feld H12
Was ich mir erhofft habe, ist eben eine Summe, die nur diejenigen Werte aufsummiert, welche für C13:Z13 größer NULL sind.

Leider ist die Meldung zu dieser Formel lediglich: Fehler: Bei dem Argument muss es sich um einen Bereich handeln.
Ich schätze mal ich darf wirklich keinen Vektor als Argument geben, sondern es muss wirklich ein Bereich sein, der genau so in der Tabelle steht.


Meine Ideen seit meinem ersten Post:

X Fehlerkorrigierung
Eine Berechnung der Gesamtsumme mit folgender Fehlerkorrigierung ist hier nicht möglich, weil die Fehler, die durch die Nullen einfließen alle von den jeweiligen Spielerzahlen (Reihe 11) abhängen, was dann auch wieder ausgerechnet werden wollte. Ich würde also wieder mit "(C13:Z13-1)/(C11:Z11-1)" in einer SUMIF( ... ) enden.

? Zwischenspeicherung
Eine Zwischenspeicherung des Vektors der Division "ARRAYFORMULA((C13:Z13-1)/(C11:Z11-1)" an anderer Stelle ist hier
ziemlich umständlich, aber scheinbar möglich...
Ich kann diesen neuen Bereich (bei mir jetzt B17:Z17) an eine "SUMIFS( ... )" übergeben, die nur dann summiert, wenn weder die Platzierung noch die Spieleranzahl eines Spiels (sprich, es gibt gar kein Spiel: alles von Spalte F bis zum Ende) NULL ist.
Code:
=SUMIFS(C23:Z23; C13:Z13; ">0"; C11:Z11; ">0")/COUNT(C13:Z13)*9+1
Nun ist diese Lösung schlicht unschön, da mein Dokument an irgendeiner Stelle voll von irgendwelchen Zahlen ist...

Naja mal sehen...


Edit:
Der Workaround mit dem Zwischenspeichern stellt mich grad schonwieder vor ein kleines Problem, vielleicht komm ich morgen dazu, das zu ergründen. >.<
 
Zuletzt bearbeitet:
Woah , endlich mal dazu gekommen. Motivation ist rar, wenn dan Semester erstmal wieder angefangen hat.
Aber die Pause hat's durchaus gebracht. Ne Google-Suche hat mir endlich das gegeben, was ich brauchte: "<>" aka. die Bedingung, dass die Zelle nicht leer ist

Hier nochmal das Spreadsheet.

Ich hab jetzt also den Workaround mit der Zwischenspeicherung umgesetzt, wo ich zunächst meine Spielergebnisse durch die Anzahl der Spieler teile. (Zeile 13 durch Zeile 11)
Code:
=ARRAYFORMULA((T1!C13:Z13-1)/(T1!C11:Z11-1))
Das speicher ich dann einfach auf einem neuen Tabellenblatt, damit man nichts davon sieht.

Daraufhin summiere ich die Zwischenergebnisse (Zeile 13 auf Blatt 2) mit der Bedingung, dass in dem korrespondierenden Feldern, wo die originalen Ergenisse stehen 8zeile 13 auf Blatt 1), überhaupt eine Zahl eingetragen ist: "<>", und errechne den Mittelwert.
Code:
=SUMIF(C13:Z13; "<>"; T2!C13:Z13)/COUNT(C13:Z13)*9+1
 
Oben