Excel

前の選択で次の選択肢が連動して変わるドロップダウンリスト


#ドロップダウンリスト #エクセル #連動 #データの入力規則 #ドロップダウン #連動ドロップダウン #INDIRECT関数

ドロップダウンリストを用意すると、入力者による入力間違いやこちらが予期せぬ入力を防ぐことができます。前回は、ドロップダウンの選択項目を自動的に増減させる方法を更新しましたが、今回はさらに便利な方法を紹介します。

旅行サイトや料理サイトなどのオンラインサイトでは当たり前の機能ですが、階層化されたカテゴリーがある場合に、一番上の階層の中から選んだ選択肢によって、次の階層の選択肢がそれに応じて絞られ、効率的に選択できるようになっています。

これをエクセルでもできないかというのが今回のノートのテーマです。

基本(データの整理)

今回の例では、旅行会社で働くスタッフが、顧客の渡航先リストを整理している場合を考えてみます。顧客名の横に、渡航国、渡航都市を順に選択する必要があるとします。その場合、下の図のように、B列の渡航国とC列の渡航都市それぞれに入力規則を使ってドロップダウンリストを設定すると、例えばB列の渡航国で「台湾」と選択しても、C列の渡航都市は「台北」と「高雄」だけでなく、「シンガポール」から「クアラルンプール」までのすべてが表示されてしまいます。

これをB列とC列を連動させようというのが目的です。

まずは、ドロップダウンリストの元データとなる表を準備してあげる必要があります。

上の図の右側にある選択肢リストを以下のように変換してあげます。ポイントは、渡航国の行、その下に渡航都市を並べるように配置することであとの処理が楽になります。

データに名前を定義する

今回は、最上位階層のデータとなる「渡航国」のプルダウンリストを選択することで、その国の都市「渡航都市」に連動するプルダウンリストの設定をします。

まず、「渡航国」の範囲を選択し、「数式」タブから、名前の定義をクリックします。

「新しい名前」のダイアログボックが表示されたら、名前に「渡航国」と入力し、OKをクリックします。

次に、選択範囲から名前を作成します。対象の範囲を選択し、「数式」タブから「選択範囲から作成」をクリックします。

「選択範囲から名前を作成」ダイアログボックスが表示されたら、上端行のみにチェックを入れてOKをクリックします。

最上位階層のプルダウンリストを指定する

ドロップダウンリストを適用させたい範囲を選択してから、「データ」タブ、「データの入力規則」と順にクリックします。

「入力値の種類」に「リスト」を選択します。

「元の値」に先程設定した渡航国の範囲(I1:N1)を選択すると、自動的に以下のように「=渡航国」と表示されたら、OKをクリックします。

最初のドロップダウンリストが機能していることを確認します。

連動させるプルダウンリストを作成する

ドロップダウンリストを適用させたい範囲(C2:C6)を選択してから、「データ」タブ、「データの入力規則」と順にクリックします。

「入力値の種類」を「リスト」に変更し、「元の値」には、「=INDIRECT(B2)」と入力し、B2に入力されたデータに基づいて選択肢が変わるように指定してあげます。ここで、各行毎の設定は不要です。

「元の値はエラーと判断されます。続けますか?」というエラーメッセージが表示されますが、「はい」をクリックして続けます。

動作確認をしてみます。

渡航国に「シンガポール」を選択した場合には、「渡航都市」の選択肢には「シンガポール」のみが表示され、同様に「台湾」を選択した場合は、「台北」と「高雄」、「オーストラリア」を選択した場合には、「シドニー」「パース」「ケアンズ」「メルボルン」「ブリスベン」の中から選択するよう連動されていることが分かります。

この処理をするだけで、入力者の負担をかなり軽減できるので是非覚えて使ってみてください。