Excelの入力規則でリスト入力ができる事は御存知ですよね。
ここで1つテクニック。
そのリスト項目を、別シートにまとめておくとメンテナンスしやすいです。
しかもあらかじめリスト項目が増えることも考慮しておくとさらに便利です。
例えば、ドロップダウンリストで表示したいデータは10個しか無いのですが、今後増える可能性があるので20行をリストの範囲にしておくようなイメージです。
ハードルは2つあります。
ハードル1:リストボックスに設定できる範囲は別シートに普通はできない。
ハードル2:20行を普通にリスト範囲にすると、リストボックスの内容が、
上記例でいうと項目10個+空白10となってしまう。
解決策として、
・ハードル1は名前の定義
・ハードル2はoffset関数
を使用しましょう。
では、手順です。
入力データシート名をsheet1、
リストボックスの項目が入力されているシート名をsheet2とします。
1.sheet2でCtrl+F3で”名前の定義”ダイアログを呼び出します。
名前:備考リスト
↑自分の分かりやすい名前でOKです。
参照範囲:=OFFSET(sheet2!$B$3,0,0,COUNTA(sheet2!$B$3:$B$26),1)
↑この例では、sheet2のB3~B26までをリスト項目の範囲としています。
2.sheet1でリストボックスを設定したいセルで、
[データ]-[入力規則]-[リスト]を選択します。
[元の値]のテキストボックスの中に、手順1で定義した名前を設定します。
=備考リスト
と入力しましょう。
3.設定したリストボックスをクリックしてみましょう。
sheet2の項目リストに空白があったとしても空白は排除されて、
リストボックスが形成されます。
リスト内容を修正したければ、sheet2のB3~B26の間で、
項目の追加/変更等を行ってください。
ちなみに、sheet1のリストボックスが設定されたセルで直接入力も許可してあげたいなら、
下記のように設定してください。
[データ]-[入力規則]-[リスト]-[エラーメッセージ]タブを開きます。
そこの、「無効なデータが入力されたらエラーメッセージを表示する」のチェックをクリア
にすればOKです。
リスト項目を別シートに作って上記のようにメンテナンスしやすい構成にしておく。
意外とハマる人が多いようです。
by shell55.