区分に応じた品番の入力リストが表示されるようにします。
具体的には、B16に
A と入力されたら「
区分A」 C16:C21 の入力リストが表示
区分A の C16:C21 に「区分リストA」という
名前を付けます。
以降、「C16:C21」 のアドレスだけでなく「区分リストA」という名前で参照できます。
この「名前で参照」する機能は後々、非常に
大きな力を発揮することになります。
"区分リストA"の最後尾"A"が区分に対応するように名前を工夫します。
1.まず、
C16:C21 を選択
2.数式バーの「
名前ボックス」(通常はセルアドレスが表示されている)に表示されている「C16」を消去して、
"
区分リストA"と入力し、
Enterを押します。
これでセル範囲 C16:C21 に"区分リストA"という名前が作成されました。
C16:E21 を選択すると"区分A"と名前ボックスに表示されることで確認可
同様に、
セル範囲C25:C30に"区分リストB"、C34C39に"区分リストC"
の名前を付けます。
間違って入力した場合などに、名前の
修正や
削除を行いたい場合は、後記「
名前の変更・削除」を参照してください。
3.セル範囲C16:C21を選択して入力規則のダイアログを表示
4.入力の種類に「リスト」、元の値に「
=区分リストA」と入力し、「OK」をクリック
5.セルC6をクリックすると入力リストが表示されることを確認
これで、名前で参照された入力規則が作成されました。
INDIRECT関数
ただし、これだけでは特に「名前」を付ける必要性はありません。
お気付きの通り、これでは、常に「区分A」のリストしか表示されません。
実際に行いたいのは、
区分に応じたリスト(Bを入力したら区分Bのリスト)が表示されるようにすることです。
ここで、
INDIRECT関数が登場します。
INDIRECT("区分リストA")とすると、戻り値は"区分リストA"という名前に対応する
セル範囲が返ります。
引数は"区分リストA"という文字列なので、加工が可能です。
具体的には、
"区分リスト" & B6 のように区分フィールドB6の文字と結合させて"区分リストA"と言う文字列を動的に作成します。
& は、前後の文字列を
連結する演算子。
引数を、INDIRECT("区分リスト" & B6) とすることでB6の内容(A〜C)の応じてリストが変化となります。
6.範囲C6:C9を選択して、左図のような入力規則を設定します。
セルC6をクリックすると、区分Aのリスト
セルC7をクリックすると、区分Bのリスト
セルC8をクリックすると、区分Cのリスト
が表示されることを確認してください。
以上で、名前作成の作業の大枠は完了です。
VLOOKUP関数への対応
品番に応じた品名/単価を自動表示しますが、参照する表がA〜Cと変化するので、
VLOOKUP関数の中でも「
名前」を参照する必要があります。
具体的には、区分でAを選択されている場合には、区分A用の表を参照。
よって、ここでは区分Aの表範囲C16:E21に
"区分A"という名前を付けます。
同じく、
区分Bの表範囲C25:E30に"区分B"
区分Cの表範囲C34:E39に"区分C"
という名前を付けておきます。
動作確認
区分と品番に応じた品名が自動表示されるようにVLOOKUP関数で検索します。
入力規則で設定したように、「範囲」は
可変となるようにINDIRECT関数で
INDIRECT("区分" & B6) とします。
区分と品番を選択すると、適切な表から品名が選択されることを確認。
後作業
単価のフィールドにも同じように設定します。
必要に応じて、空白処理(区分または品番が空白の場合は何も表示しない)を施します。