ein tl;dr gibt es weiter unten

ich habe noch nie so richtig mit Excel/Calc gearbeitet, weswegen ich mir selbst ein Projekt aus den Fingern gesogen habe, bei dem ich jetzt etwas ins Stocken gekommen bin. Dieses Projekt hat Dartsbezug; ein Thema zu dem ich auch nicht viel Ahnung habe. Mir ist hierzu lediglich ein Projekt eingefallen. Also verzeiht mir bitte völlig falsch verwendetes Vokabular aus dem Calc- sowie Dartsjargon.
Ich möchte mir ein Darts-Sheet machen, der mir den Punktestand und die nächsten (geeigneten) Würfe, die ich anpeilen sollte, anzeigt. Dazu muss ich mir zunächst ein Sheet generieren, dass mir zu jedem Punktestand anzeigt, welches die nächstbesten Würfe wären.
Exkurs:
Beim Darts ist dabei auch von Bedeutung, wie viele Pfeile ich im Durchgang noch zur Verfügung habe: Stehe ich beispielsweise bei 61 Restpunkten und habe noch 3 Pfeile, macht es Sinn Triple15 und anschließend Double8 zu werfen, weil man bei Verfehlen von Triple15 auf Single15 immer noch "angenehm" über Single14 und Double16 finishen kann. Bei nur zwei Pfeilen sollte man Tripple11 Double14 versuchen, weil man mit Single11 immer noch über DoubleBullsEye finishen kann (vgl. https://www.dartcoach.de/dart-checkout). Ziel beim Darts ist es, mit einem beliebigen DoubleFeld auf 0 zu kommen.
Mein Tabellenausschnitt an dieser Stelle sieht also so aus: In der Spalte M versteckt sich der übrig gebliebende Wert nach dem Durchgang.
(=A182-(3*C182+2*D182+1*E182)-(3*F182+2*G182+1*H182)-(3*I182+2*J182+1*K182))
In Spalte N wird mir angezeigt, was ich *nach* dem Durchgang werfen sollte. Das basiert also auf dem Wert, der in M stehen bleibt und was ich im Dokument weiter oben unter diesem Wert bei noch verbleibenden 3 Darts in Spalte L angegeben habe.
Siehe folgendes Bild: Und das klappt alles wunderbar.
Jetzt möchte ich eine weitere Spalte hinzufügen, die mir vorschlägt, was ich in die Spalten FGH und IJK eintragen soll.
Beispiel: Ich bin bei 180Punkten und habe 3 Pfeile Rest: Wenn ich jetzt in Zeile537/SpalteC 20 eintrage, wird aus den 180 (-3*20)= 120 bei noch zwei Restdarts. Meine Tabelle soll also im Anschluss aus jener Zeile, in der 120 Rest bei 2 Darts ist, in die Suggestion-Spalte schreiben, was dort als Wurf empfohlen wurde.
Und das funktioniert auch: So kann ich nun aus der Spalte O ersehen, was ich in FGH und IJK eintragen sollte. Wenn mir die Zahlen nicht gefallen, mache ich aus der 20 in Spalte C eine 19 und schaue, was mir meine Liste dann vorschlägt.
Auch das klappt.
Aber oh man, ist mein Dokument langsam! Es zu öffnen braucht ewig, die Berechnung dauert ewig und das alles nur wegen Spalte O. Vorher lief alles sehr geschmeidig.
Und das ist die Zeile, die ich für O reingehackt habe:
Code: Alles auswählen
=IF(AND(B537<>1, M537<>0, 9-COUNTIF(C537:K537, "")<>B537), INDIRECT(ADDRESS(MATCH(1,(M537=A:A)*(B537-(9-COUNTIF(C537:K537, ""))=B:B),0), 12)), "")
Wenn Spalte B >1 und in die Spalten C-K noch nicht alle Darts (B) eingetragen wurden:
Dann gib mir die 12. Spalte von der Zeile, in der der Rest aus Spalte M in Spalte A steht und die Anzahl der zu werfenden Darts mit der hier übrig gebliebenen Anzahl übereinstimmt.
Ich weiß nicht, ob die Beschreibung es schlechter oder besser gemacht hat...

Auf jeden Fall ist aufgrund dieses Befehls mein Dokument unbrauchbar; hat jemand einen Alternativvorschlag für mich?
Tut mir leid für den ewig langen Text. Einfach nur meine Codezeile hinklatschen wäre glaube ich auch nicht in Ordnung gewesen.
tl;dr
Code: Alles auswählen
=IF(AND(B537<>1, M537<>0, 9-COUNTIF(C537:K537, "")<>B537), INDIRECT(ADDRESS(MATCH(1,(M537=A:A)*(B537-(9-COUNTIF(C537:K537, ""))=B:B),0), 12)), "")
Danke.