残業を減らす!Officeテクニック

Excelで大・中・小項目が連動する3階層ドロップダウンリストを簡単に作る方法

上の階層に連動するドロップダウンリストは簡単に作れる

 ボタンをクリックするとリストが展開される仕掛けは、日常的によく使いますよね。「ドロップダウンリスト」や「プルダウンリスト」と呼ばれ、以下の例では、選択したカテゴリに限定して検索できるようになります。

ある項目にぶら下がるリストを選択する仕掛けは、Webサイトなどでもよく使われる

 このようなドロップダウンリストはExcelでも作成可能です。[データの入力規則]ダイアログボックスにリストの項目を指定するのが最も簡単。セルに[▼]ボタンが表示されて、リストから項目を選択できるようになります。

分類として「個人」と「法人」のどちらかを選択できるように、ドロップダウンリストを作成した
[▼]をクリックするとリストが表示される

 入力の手間も省けてミスも防ぐことができますが、同じ発想で「カテゴリ」と「担当」のドロップダウンリストを作ると、以下のようになってしまいます。

カテゴリの[▼]をクリックした。「個人」「法人」の分類によらず、すべてのカテゴリのリストが表示されている
担当の[▼]をクリックした。カテゴリに関係なく担当者全員のリストが表示されている

 不必要なリストが表示されて使いにくい状態です。例えば、分類が「個人」なら「サービス」「ソフトウェア」「ハードウェア」、カテゴリが「サービス」なら、担当する人のみを表示したいですよね?

 難易度高めと言われる“連動する”ドロップダウンリストですが、コツさえつかめば大丈夫です。今回は、大項目→中項目→小項目と絞り込める3階層のドロップダウンリストの作り方を紹介します。

大項目のドロップダウンリストを用意する

 大項目のドロップダウンリストは、項目の直接指定が簡単です。項目数が多い場合は、あらかじめセルに項目を用意しておき、セル範囲を指定する方法もあります。

セル範囲を選択して[データ]タブにある[データの入力規則]をクリックする
[データの入力規則]ダイアログボックスが表示される。[入力値の種類]から[リスト]を選択して、[元の値]に「個人,法人」と入力する。「,」は半角で入力する。[OK]をクリックする
セルの右側に表示された[▼]をクリックするとリストを確認できる

セル範囲に名前を付ける

選択範囲から名前を付ける

 セル範囲を参照するために「名前」を付けておきます(詳しくは後述)。ここでは「分類」に2つ、「個人」と「法人」に3つずつのリストが必要なので、まとめて名前を付けてしまいましょう。離れたセル範囲を選択するときは[Ctrl]キーを押しながらドラッグです。

「分類」の2つ、「個人」と「法人」の3つのセル範囲を[Ctrl]キーを押しながら選択しておく。[数式]タブにある[選択範囲から作成]をクリックする
[上端行]にチェックを付ける。[OK]をクリックすると[選択範囲から名前を作成]ダイアログボックスが閉る。画面に変化はないが、名前は付けられているので問題ない

「名前」とは?

 「名前」を付けることで、特定のセル範囲を指し示すことが可能になります。上記の手順によって「個人」「法人」「サービス」「ソフトウェア」「ハードウェア」「運用」「システム」「ご相談」と8つの名前が付けられました。

 例えば「=個人」と入力することで、セルG3~G5($G$3:$G$5)を指定したことになります。名前は数式でも利用でき、この後に利用するINDIRECT関数で指定するために、名前を付けておいたわけです。[名前の管理]ダイアログボックスから、現在付けられている「名前」を確認できます。

[数式]タブにある[名前の管理]をクリックする
[名前の管理]ダイアログボックスで、現在付けられている名前を確認できる。[閉じる]をクリックする
セルに「=個人」と入力してみる
「個人」という名前の指すセルG3~G5($G$3:$G$5)の値が表示される

中項目のドロップダウンリストを作成する

INDIRECT関数を利用する

 中項目のドロップダウンリストも[データの入力規則]ダイアログボックスを利用しますが、[元の値]に入力するINDIRECT関数がポイントです。「=INDIRECT(C2)」と入力すると、セルC2の値(個人)を参照して、「個人」が示す参照($G$3:$G$5)を返すという意味になります。

セル範囲を選択して[データ]タブの[データの入力規則]をクリックしておく。[入力値の種類]は[リスト]を選択、[元の値]に「=INDIRECT(C2)」と入力する。セルC2の値(個人)が示す参照が返される。[OK]をクリックする。
大項目に応じたカテゴリのリストが表示できるようになる。セルD2では「個人」に含まれる「サービス」「ソフトウェア」「ハードウェア」が表示される
セルD4では「法人」に含まれる「運用」「システム」「ご相談」が表示される

INDIRECT関数とは?

 INDIRECT関数は、引数に指定した“文字列が指す参照を返す”関数です。構文は「=INDIRECT(参照文字列)」となります。セルに入力してみましょう。

 「=INDIRECT(C2)」はセルC2の値、つまり「個人」が指す参照($G$3:$G$5)を返すので、結果として「サービス」「ソフトウェア」「ハードウェア」が表示されます。セルC2の値が「法人」に切り替われば、参照は「$H$3:$H$5」になります。

セルに「=INDIRECT(C2)」と入力してみる
セルC2の値(個人)が指す参照先($G$3:$G$5)の「サービス」「ソフトウェア」「ハードウェア」が表示される

小項目のドロップダウンリストを作成する

 3階層目の小項目のドロップダウンリストは、2階層目の中項目と同じ考え方ができます。カテゴリに応じた担当を表示するため、セルE2からの参照先をセルD2に指定するだけです。

 [データの入力規則]ダイアログボックスに「=INDIRECT(D2)」と指定しても構いませんが、[データの入力規則]はコピー&ペーストできるので、セルD2をそのままセルE2にコピペします。

セルD2をコピーして、セルE2に貼り付けた。セルD2の内容が表示されているが、気にしなくていい
[データの入力規則]ダイアログボックスを表示して確認してみよう。[データ]タブの[データの入力規則]をクリックする
セル参照がずれて[元の値]の数式が「=INDIRECT(D2)」となっていることがわかる。[OK]をクリックして、ダイアログボックスを閉じておく
セルE2をオートフィルでコピーする
中項目に応じた担当のリストが表示できるようになる。セルE2では「サービス」に含まれる「赤川」「太田」「白石」が表示される
セルE3では「ソフトウェア」に含まれる「二村」「松尾」「角井」「安田」が表示される

項目名が重複する場合の対処法

 最後に項目名が重複する場合の対処法を紹介します。例えば「個人」と「法人」に同じ名称の「サービス」という項目があるとしましょう。この場合、どちらの「サービス」なのか区別できません。

 文字列を連結した新しい「名前」を用意して、小項目のドロップダウンリストでは連結した文字列をINDIRECT関数に指定します。

「個人」と「法人」に「サービス」という同じ項目がある。小項目のドロップダウンリストで区別できるように、文字列を連結した項目名を用意する。セルG9に「=$G$7&G8」と入力してセルI9までコピー。セルG17に「=$G$15&G16」と入力してセルI17までコピーした
新しいセル範囲で「名前」を付ける
小項目のドロップダウンリストを設定するセル範囲を選択して[データの入力規則]ダイアログボックスを表示する。[元の値]に「=INDIRECT(C2&D2)」と入力する。セルC2とD2を連結した文字列を参照するという意味になる。[OK]をクリックする
中項目のカテゴリは選択し直しておく。[個人]-[サービス]の担当がリストで表示される
[法人]-[サービス]の担当がリストで表示される