
Im Rahmen meiner IKT-Arbeit müssen wir ein Schiffsschlachtspiel entwickeln und ich dachte dabei unter anderem an
=IF(ISNUMBER(SEARCH("*x*",C3)),"HIT","MISS")
um zu prüfen, ob diese Zelle x enthält, aber offensichtlich wäre es statisch und prüft immer C3. Ich muss C3:G8 durchsuchen, aber wenn ich das tue
=IF(ISNUMBER(SEARCH("*x*",C3:G8)),"HIT","MISS")
Es werden alle diese Zellen durchsucht und alle müssen ein x enthalten oder nicht, um HIT oder MISS zurückzugeben.
Ich dachte, wenn Sie beispielsweise auf eine Zelle D4 doppelklicken, wird D4 übernommen und in die Formel eingefügt, fast wie eine dynamische Formel. Ist das überhaupt möglich?
Gehe ich das falsch an und wenn ja, was wäre ein besserer Ansatz?
Danke
Antwort1
Für die „dynamische Formel“, wie Sie sie beschreiben, wäre VBA erforderlich. Ich habe eine Methode für den Einstieg beigefügt – sie ermöglicht dem Benutzer, Koordinaten einzugeben und herauszufinden, ob er einen TREFFER oder FEHLSCHLAG hat.
In der Ergebniszelle wird folgende Formel verwendet:
=IF(INDEX(C3:D5,MATCH(H3,B3:B5,0),MATCH(I3,C2:D2,0))="x","HIT","MISS")
Um es lesbarer zu machen (da es sich um eine Hausaufgabe handelt ...), wäre ich versucht, benannte Bereiche zu verwenden und daher:
=IF(INDEX(grid,MATCH(H3,y_axis,0),MATCH(I3,x_axis,0))="x","HIT","MISS")
.
AKTUALISIEREN
Hier ist eine weitere ähnliche, einfache Methode, die bedingte Formatierung verwendet, um Treffer und Fehlschläge anzuzeigen:
Die bedingte Formatierung verwendet einfache Formeln wie folgt:
=AND(B3="x",H3="x") //for a hit
=AND(B3="x",H3="") //for a miss
Die Formel für die verbleibenden Treffer lautet wie folgt:
=COUNTIF(H3:L16,"x")-SUMPRODUCT((H3:L16="x")*(B3:F16="x"))