Webサイト等でドロップダウンリストから項目を選ぶと別のドロップダウンリストに連動して、リストに関連する項目が表示されるドロップダウンリストを見たことがありませんか?
Excelで入力する際に想定されない組み合わせの値がセルに入力されてしまうことがあると、Excelでもこのように連動するドロップダウンリストができたらいいな思うことがありますよね。
そこで今回はExcelのドロップダウンリストで選択した項目に連動して別のドロップダウンリストの中身を表示する方法を解説します!
上記のようなドロップダウンリストを作成するにはいくつかの方法がありますので、それらを解説していきます。
ドロップダウンリストに連動してリストの中身を変える方法
冒頭で例示した以下の分類と商品の関係を持つリストを使ってリストが連動するドロップダウンリストを作成します。
上記でいくつかの方法で実現できるとも前述しましたが、この記事では「INDIRECT関数」を使用する方法と「IFS関数」を使う方法を解説します。
いずれの場合にも基となる項目のリストの設定は普通のリストの設定と同じなので、共通する設定は以下のようにしておきます。
「データ」タブの「データの入力規則」を選択します。
「入力値の種類」から「リスト」を選択し、「元の値」に分類を設定します。
まずは、分類のドロップダウンの設定はできるようになりました。
ここまでの設定をしていることを前提に「INDIRECT関数」と「IFS関数」を使ったドロップダウンリストの作成方法を解説します。
方法①:INDIRECT関数
連動するドロップダウンリストを実現する方法の1つ目は「INDIRECT関数」です。
INDIRECT関数を使うこの方法は次で紹介する方法よりも少ない手数でドロップダウンリストを実現することができます。
INDIRECT関数とは、ざっくりと表現すると指定した文字列をキーにして別のセルを参照する関数です。
(参考:Microsoftサポート – INDIRECT関数)
ここでは、セルに名前を付けて、その名前を基にドロップダウンリストに表示する値を引っ張ってくるイメージです。
まずは指定するための文字列を設定するためにセルに名前を付けます。
INDIRECT関数については以下の記事で分かりやすく解説しているので、もしINDIRECT関数になじみがない方は参考にしてみてください。
(参考:ExcelのINDIRECT関数とは)
セルに名前を付ける
分類1に所属する商品のセル範囲を選択して「名前ボックス」に「分類1」と設定します。
データの入力規則を設定
連動するドロップダウンリストを選択してデータの入力規則を設定します。
「入力値の種類」に「リスト」を選択して、「元の値」に「INDIRECT関数」を記述します。
INDIRECT関数のカッコ内には、分類のドロップダウンリストが設定されているセルを選択します。
ここまで設定すると以下のように連動するドロップダウンリストができます!
INDIRECT関数がどういうものか理解できていないと少し不思議な感じがしますが、かなり少ない手順で実現することができたのではないでしょうか。
方法②:IFS関数
続いて、「IFS関数」を使った方法を解説していきます。
IFS関数は条件によって異なる値やセルを参照する関数です。
IFS関数を使った方法は、INDIRECT関数を使った方法よりも関数の記述が複雑になりますので、大抵の場合はINDIRECT関数を使用することをおすすめします。
一方で、IFS関数を使った方が便利な場合は、元の値(分類)の名称が頻繁に変わる場合には、このIFS関数を使った方法が便利に感じる場合があります。
データの入力規則を同様に設定していきます。
今回の場合は「元の値」の設定をIFS関数を使って以下のように記述していきます。
入力欄が狭くて非常に分かりにくいので、関数の記述を詳細に解説していきます。
今回の関数の記述の全文は以下の通りです。
=IFS($A$1=Sheet2!$A$2,Sheet2!$B$2:$B$6,$A$1=Sheet2!$A$3,Sheet2!$C$2:$C$7)
難しいセルの参照部分を文字に変えると以下のようになります。
=IFS((分類のドロップダウンリストセル)=(分類1),(商品A~E),(分類のドロップダウンリストセル)=(分類2),(商品F~J))
つまりIFS関数による分岐で分類1の時は商品A~E、分類2の時は商品F~Jのセル範囲を参照するようにしています。
このように設定することで、INDIRECT関数を使った時のように連動したドロップダウンリストを作ることができます。
こんな複雑な関数を記述してまでIFS関数を使う理由としては、分類の名前が変わったときに便利だからです。
例えば、「分類1」が「分類3」に変わった場合、IFS関数では参照元となるリストを更新するだけで、ドロップダウンリストにも変更反映されるようになるので便利です。
以下の通り「分類3」に変更しても連動したドロップダウンリストにも反映されます。
INDIRECT関数の場合は名前の変更を変えた上で、元のドロップダウンリストまで変更してあげなくてはいけないので、メンテナンスが煩雑になります。
このように一時的な結果は同じですが、「INDIRECT関数」と「IFS関数」で実現の手軽さとメンテナンス性が異なる為、どちらかを使うかは目的によって判断しましょう!
まとめ:連動するドロップダウンリストの目的に合わせて実現方法を判断!
今回は「INDIRECT関数」と「IFS関数」を使用してドロップダウンリストに連動してリストの中身を変える方法を解説しました!
得られる結果は同じですが、2つの実現方法の違いは以下の通りです。
- INDIRECT関数
- 少ない関数の記述で実現が可能
- 名前の設定と関数自体が少し分かりにくい
- 元の値は変更する場合にメンテナンスに手数が多い
- IFS関数
- 関数の記述が長くなり可読性が低い
- 元の値を変更するだけで連動するドロップダウンリストまで反映される
実現したい内容に対して複数のアプローチ方法があった場合に、必ずしも最も簡単な方法が良いというわけではありません。
今回の連動するドロップダウンリストの例に限らず、目的に合わせて実現方法を判断するようにしましょう!
他にもExcel業務を効率化するテクニックを紹介していますので、興味がある方はぜひ参考にしてみてください!
(参考:Excel業務効率化まとめ)
コメント