ダブルクリックしてセル番号を取得し、別の数式に入力します

ダブルクリックしてセル番号を取得し、別の数式に入力します

私の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"))    

関連情報