ダウンロード

ブロック候補- 入力されているブロックのデータを調べて、「調査する数字」が置けるかをチェックします。

仕様

あるブロック内のセルに注目し、既に数字が入力さ れている場合、または、
そのブロック内に「調査する数字」が存在する場合 は、そのブロック全体を「候補無し」とて「」とします。
    - 空白でなく「0」にするのは、後の計算の都合

ブロックに於ける判定は行列の場合と少し異なります。

行列の場合は複合参照で範囲を特定できますが、ブロックの場合は、所属するブロックを特定する必要があります。

ブロックごとに数式を設定(ブロック単位のコピーを含む)することもできますが、後々、面倒なことになります。


そこで、ここでは、セルの行列番号から所属するブロック位置を計算で求めます。
セルの相対行および列番号(全体ブロックの左上から、0,1,2,3,4 ・・ とする)をR,Cとする場合、
 小ブロックの開始相対行 : 3*INT(R/3)
 小ブロックの開始列対行 : 
3*INT(C/3)
で表せます。

また、R,Cは、
 R = セルの行番号-全体ブロックの開始行
 C = セルの行番号-全体ブロックの開始列

および、行および列番号を求める関数
 ROW(),COLUMN()
を使用して、下図のような表として表せます。

行位置表 : 3*(INT((ROW()-ROW($C$38))/3))
列位置表 ; 3*(INT((COLUMN()-COLUMN($O$38))/3))

それぞれのセルに対して、ブロックを対応させたものが下図下段の表。
これにより、セルからブロック位置を求めることができます。

行列相対位置表

候補

上図のブロック位置表から、

 ・既に入力済み、または、所属する小ブロック内に「調査する数字」がある場合は「0」、
 ・無い場合は「調査する数字」を表示


の数式は以下のように表せます。
 =IF(OR(K18<>"",COUNTIF(OFFSET($C$10,K46,W46,3,3),NO)>0),0,NO)

OFFSET関数は、基点位置を指定行、列数分シフトさ せる関数です。
(パラメータにより、サイズも変更可 - 上記の3,3は小ブロックのサイズを表す)

COUNTIF関数で、小ブロック内にある「調査する数字」の個数を調査。

下図の「ブロック」で色が付いている部分がブロック内に「6」を置ける候補セル




次項で、行列の候補と総合して、「調査する数字」が置けるセルをハイライト表示します。



トップページへ

← 前のページへ 次のページ →

テンプレートのダウンロード