Excelでプルダウンリストを使っていると、「1つ目で選んだ内容に合わせて、2つ目の選択肢を変えたい」と思うことがあります。たとえば、「部署」で総務部を選んだときは総務部の課名だけを表示し、「営業部」を選んだときは営業部の課名だけを表示する、といった使い方です。
このような連動するプルダウンリストは、「名前の定義」とINDIRECT関数を使うことで作成できます。
本記事のサンプルについて
本記事では、メインシートのC列で部署名を選択すると、D列の課名のプルダウン項目が、選択した部署に応じて自動的に切り替わるようにします。部署名や課名の一覧は、設定シートに記載しています。

設定手順
ここからは、実際に連動するプルダウンリストを設定していきます。
本記事では、メインシートのC列にある部署名のプルダウンを「1つ目のプルダウン」、D列にある課名のプルダウンを「2つ目のプルダウン」と呼びます。
元となるプルダウンを設定します。
このプルダウンの項目により、2つ目のプルダウンの項目が変動します。
メインシートの「部署」を範囲選択します。

プルダウンを設定するため、[データの入力規則]ウィンドウを表示します。
[データ]タブから、[データの入力規則]ボタンをクリックします。

[入力値の種類]を「すべての値」から「リスト」に変更してください。

[元の値]を元となる1つ目のプルダウンに表示される項目の範囲で指定し(画像の①)、[OK]ボタンで設定を完了します(画像の②)。

元のシートに戻り、部署名のプルダウンから表にある項目を1つ選択します。
※ 空白のままだと、後の手順でエラーが表示される場合があります。

[数式]タブから、[名前の定義]をクリックして、新しい名前ウィンドウを表示します。

「名前の定義」で、2つ目のプルダウンに表示するリストの範囲に名前を付けます。
[名前]には、1つ目のプルダウンに表示される項目名を入力します。
[参照範囲]には、その項目を選んだときに表示したい候補リストの範囲を指定します。
下画像の例では、「総務部」を選んだときに「庶務課」「法務課」などを表示したいため、次のように設定します。
・[名前]:総務部
・[参照範囲]:総務部の課名が入力されている範囲
最後に[OK]ボタンをクリックして、設定を確定します。
なお、「人事部」「営業部」についても、次のSTEPで同じように設定します。

※ 画像をクリックすると拡大表示できます。
STEP6、STEP7と同じ手順で、1つ目のプルダウンに表示される残りの項目にも名前を定義します。
サンプルでは「人事部」「営業部」の設定をします。

『営業部』は次のように設定します。

2つ目のプルダウンを設定する範囲を選択します。

[元の値]にINDIRECT関数を使用します。引数には、2つ目のプルダウンを設定するセルの左隣にある、1つ目のプルダウンのセルを指定します。
今回の例では、D3のセルに2つ目のプルダウンを設定するため、左隣のC3セルを指定して、「=INDIRECT(C3)」のように入力します。このとき、C3のように、$マークを付けない相対参照で指定します。$C$3のような絶対参照にすると、下の行にコピー・適用したときに正しく連動しない場合があります。
[OK]ボタンで設定を完了します。

INDIRECT関数は、セルに入力されている文字列を、実際の参照として扱うための関数です。
今回の例では、C3セルに入力されている「総務部」という文字列を、名前の定義で設定した範囲名「総務部」として参照し、2つ目のプルダウンに表示しています。
プルダウンを変更して、2つ目のプルダウンの項目が切り替わるか確認してください。
切り替われば完成です。



※ 画像をクリックすると拡大表示できます。
まとめ
今回は、1つ目のプルダウンで選んだ内容に応じて、2つ目のプルダウンの項目を切り替える方法を解説しました。連動するプルダウンリストでは、1つ目のプルダウンの項目名と、名前の定義で設定する範囲名を同じにしておくことがポイントです。
そのうえで、2つ目のプルダウンの[元の値]にINDIRECT関数を設定すると、選択した項目に対応するリストを表示できます。
部署名と課名、商品カテゴリと商品名など、選択肢を段階的に絞り込みたいときに便利な方法です。
