机列表を作ったとき,入力規則を使って名前が入力できるようにすると,とても便利です。
打ち込む煩わしさが無くなるし,何よりも打ち間違いがなくなります。
ですが,終盤になっても,たくさんの名前の中から探さなくてはいけません。
これが,下のように未記入の名前だけのリストになったら,どんなに便利でしょうか。
(1)まず、下のような表を作ります。
(2)D16に,
=,IF(COUNTIF($B$3:$L$12,C18)=0,ROW(),"")
と入力し,D25までコピーします。
【意味】 @ $B$3:$L$12 の範囲にC18の名前がいくつあるか調べます。(COUNTIF関数)
A 0個だったら,行番号を返します。(IF関数,ROW関数)
ですが,名簿の名前のないところまで,行番号が表示されてしまいました。
そこで,少し修正をします。
=IF(C16="","",IF(COUNTIF($B$3:$I$10,C16)=0,ROW(),""))
これで,名前のない所は,表示されなくなりました。
(3)E16に,
=SMALL($D$16:$D$25,1)
【意味】 D16〜D25にある数値で,1番目に小さい数値を返します。
と入力し,E25までコピーします。
すると,E17以下,全部17になってしまいました。これは,○番目にあたる数字が,どれも1のままだからです。
この部分は,本当なら,2・3・4・・・ と打ち直していくのですが,とても大変です。
そこで,E18に,次のように入力します。
=SMALL($D$16:$D$25,ROW(A1))
【意味】 ROW関数は,行番号を返します。この場合は,A1の行番号1を返します。
これを,E25までコピーします。
エラーになっているところがありますが,これはこのままで大丈夫です。
(4)F16に,
=INDIRECT("C"&E16)
と入力し,F25までコピーします。
【意味】 文字列CとE16の内容「17」を結合すると,C17になります。ですので,C17の内容を表示します。
ここでもエラーになっているところがありますが,このままで大丈夫です。
(5)次に,B3の、入力規則の設定を行います。
しかし,その前に少し準備をしておきます。
E27に,
=COUNT(E16:E25)
と入力します。
【意味】 E16〜E25までの範囲で,数字がいくつあるか調べます。
つまり,これがリストの要素の個数になります。
では,いよいよ,B3に入力規則を設定します。(データ→入力規則)
・「元の値」のところに,関数を入力します。
=OFFSET($E$16,0,0,$E$27,1)
OFFSET(参照,行数,列数,高さ,幅)
元の値の範囲を指定するので,高さをデータの数だけにします。
※OFFSET関数の詳しい働きは,こちらのページへ。
(4)B3のセルを、他のセルにコピーします。
これで,完成です。
入力規則で入力するたびに,リストの未入力は更新されていきます。