
私のICTの仕事の一環として、戦艦ゲームを作成する必要があり、私がそれを行う方法の1つは、
=IF(ISNUMBER(SEARCH("*x*",C3)),"HIT","MISS")
そのセルにxが含まれているかどうかをチェックするのですが、明らかに静的で常にC3をチェックします。C3:G8を検索する必要がありますが、
=IF(ISNUMBER(SEARCH("*x*",C3:G8)),"HIT","MISS")
すべてのセルが検索され、すべてのセルに x が含まれているかどうかによって、HIT または MISS が返されます。
たとえば D4 というセルをダブルクリックすると、D4 が取得されて、動的な数式のように数式にドロップされると考えていました。そんなことは可能なのでしょうか?
私は間違った方法でこれに取り組んでいますか?もしそうなら、より良い方法は何でしょうか?
ありがとう
答え1
あなたが説明している「動的な数式」には VBA が必要です。開始するためのメソッドを用意しました。これにより、ユーザーは座標を入力して、ヒットかミスかを確認できます。
結果セルで使用されている数式は次のとおりです。
=IF(INDEX(C3:D5,MATCH(H3,B3:B5,0),MATCH(I3,C2:D2,0))="x","HIT","MISS")
読みやすくするために (宿題なので...)、名前付き範囲を使用することをお勧めします。
=IF(INDEX(grid,MATCH(H3,y_axis,0),MATCH(I3,x_axis,0))="x","HIT","MISS")
。
アップデート
条件付き書式を使用してヒットとミスを表示する、同様の簡単な方法をもう 1 つ示します。
条件付き書式では、次のような単純な数式を使用します。
=AND(B3="x",H3="x") //for a hit
=AND(B3="x",H3="") //for a miss
残りヒット数の計算式は次のとおりです。
=COUNTIF(H3:L16,"x")-SUMPRODUCT((H3:L16="x")*(B3:F16="x"))