Excel Kreuztabelle Turnier automatisch befüllen - kleiner Fehler?
Hallo zusammen,
ich habe eine kleine Turniertabelle, die ich automatisch befüllen lassen möchte, dies funktioniert auch ganz brauchbar, lediglich eine Zelle (F6) sträubt sich dagegen.
Formel in D4
=LET(Matrix;MTRANS(BEREICH.VERSCHIEBEN(C5:C7;0;0;3-(ZEILE(D3)-ZEILE(D$3));));
WENN(Matrix="";"";$C$2-Matrix) )
Formel in E5
=LET(Matrix;MTRANS(BEREICH.VERSCHIEBEN(D6:D8;0;0;3-(ZEILE(E4)-ZEILE(E$3));));
WENN(Matrix="";"";$C$2-Matrix) )
Formel in F6
=LET(Matrix;MTRANS(BEREICH.VERSCHIEBEN(E7:E9;0;0;3-(ZEILE(F5)-ZEILE(F$3));));
WENN(Matrix="";"";$C$2-Matrix) )
Wie man dem Formeln entnehmen kann, soll geprüft werden ob die betreffenden Zellen auf der anderen Seite des X leer ist, wenn dies der Fall ist soll der entsprechende Gegenpart dieser Matrix hier auch leer bleiben.
Ist sie hingegen befüllt, soll der Wert aus Zelle C2 (hier steht entweder eine 1 oder eine 2 drin (weiße Schrift), je nach dem ob es nur eine Runde oder eine eine Hin- und Rückrunde gibt). um den Wert auf der anderen Seite des X subtrahiert werden.
Wie gesagt funktioniert auch alles prima lediglich in Zelle F6 bleibt auch bei leerer Zelle immer die 1 stehen, ich hab keine Ahnung wo ich noch gucken kann Formatierung steht in allen betreffenden Zellen auf Standard, hab ich vielleicht irgendwas übersehen, findet einer ggf. einen Fehler?
2 Antworten
Bevor ich den Fehler suche etwas, das mir direkt ins Auge springt:
3-(ZEILE(D3)-ZEILE(D$3)
ZEILE(D$3) ist immer 3.
3-(x-3) = 6-x
Du kannst es zu 6-ZEILE(D3) vereinfachen.
______________
Mir erschließt sich zwar nicht, wie man eine Matrix / einen Bereich von einer Zahl subtrahieren kann, aber es scheint zu funktionieren.
Am Effekt gearbeitet kannst du deinen Fehler beheben, indem du auf =0 abfragst:
=LET(Matrix;MTRANS(BEREICH.VERSCHIEBEN(E7:E9;0;0;3-(ZEILE(F5)-ZEILE(F$3));)); WENN(Matrix=0;"";$C$2-Matrix) )
Nachtrag
nein es funktioniert leider nicht jetzt funktioniert die Formel nicht mehr richtig, da wenn ich eine 0 eintrage nicht mehr auf der Gegenseite eine 1 erscheint. War also leider noch nicht die Lösung, im nachhinein betrachtet eigentlich logisch
Ich vermute, dass es daran liegt, dass es eine 1x1 Matrix ist, welche als Wert interpretiert wird und beim Interpretieren eine 0 herauskommt.
Ist aber schwer für mich zu sagen, weil ich wie gesagt noch keine Erfahrungen mit dem Matrixansatz habe.
Das ist vielleicht ein Ansatz, ich schau mal ob ich in die Richtung was raus bekomme, ob man der Wert irgendwie umformen kann.
Keien Ahnung.
Aber ich würde schon nochmal die Formatierungen checken!
Vertikal mehr als 7, Horizontal mehr als F macht auf jeden Fall keinen Sinn.
Du gehst aber teilweise auf D8, oder E9 - check das mal.
Aber ich würde schon nochmal die Formatierungen checken!
Zitat von mir aus der Frage: Formatierung steht in allen betreffenden Zellen auf Standard (vorletzte Zeile)
Vertikal mehr als 7, Horizontal mehr als F macht auf jeden Fall keinen Sinn.
Jetzt bin ich etwas verwirrt, vertikal mehr als 7? Wie kommst du auf mehr als 7? Du weißt wie -> Bereich.Verschieben funktioniert? Das macht nämlich total Sinn!
Ich gebe in Zelle E5: D6:D8 als Basis Bereich an, der 3 Parameter bestimmt die Höhe hier schreibe 3-((ZEILE(E4)-ZEILE(E$3))
Zeile(E4) ergibt logischerweise 4, Zeile(E$3) logischerweise 3 => 4-3 = 1
Also wird von 3-1 abgezogen womit 2 herauskommt, die Höhe wird als durch Bereich verschieben von D6:D8 auf D6:D7 reduziert (2 hoch). Und exakt genauso verhält sich die Formel in F6 nur das es da um 2 reduziert wird, also nur noch 1 hoch.
Sprich jede Zeile die ich weiter runter komme, wir der Bereich auf der anderen Seite des Xes in der vertikalen um 1 kürzer, was ja genau dem Prinzip einer Kreuztabelle entspricht.
Hallo Suboptimierer, vielen Dank für die Antwort
ja solche Konstrukte entstehen bei mir oft "provisorisch" weil ich sie so schreibe wie ich denke ohne zu optimieren und wie es immer ist Provisorien halten am Längsten.
Außerdem kommt hinzu, dass die zweite 3 ja ein Zellbezug ist, der wird ab und an auch mal angepasst, wenn die Matrix nämlich in einer anderen Zeile beginnt. Solange es sich nur horizontal verschiebt ist alles gut, aber sobald es vertikal geändert wird muss D$3 angepasst, da ist es für mich irgendwie einfacher dies über Zelle zu machen, als die 6 immer aufzusummieren streng genommen könnte ich die 3 ganz vorne auch noch dynamisieren, denn die 3 ist ja nur die Anzahl der Zellen der größten Zellmatrix bei einer 4X4 Kreuztabelle wäre es eine 6X6 Kreuztabelle müsste es also entsprechend eine 5 sein.
Naja du subtrahierst ja nicht direkt die Matrix sondern subtrahierst von 1(Zelle C2) den Inhalt der jeweiligen Zelle innerhalb der Matrix und transponierst das Ergebnis in die entsprechende Zelle der gedrehten Matrix (Mtrans) und zwar jede einzeln für sich.
ich hätte schwören können, das hab ich gestern gemacht aber tatsache es geht.
Was sich mir dennoch nicht erschließt warum funktioniert es bei den vorherigen Formeln in D4 und E5 und F6 bringt dauerhaft eine 1