未記入者だけのリスト(机列表)

机列表を作ったとき,入力規則を使って名前が入力できるようにすると,とても便利です。
打ち込む煩わしさが無くなるし,何よりも打ち間違いがなくなります。
ですが,終盤になっても,たくさんの名前の中から探さなくてはいけません。

これが,下のように未記入の名前だけのリストになったら,どんなに便利でしょうか。



(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のセルを、他のセルにコピーします。
  これで,完成です。
  入力規則で入力するたびに,リストの未入力は更新されていきます。