エクセルで複数のプルダウンリストを連動(名前定義を使わない方法)
例えば、次のように、
大項目→小項目と入力させたいような場合には、
複数のプルダウンリストが連動すると便利です。
こういう場合、
多くのホームページで、
「名前定義とindirect関数」を組み合わせた方法が紹介されていますが、
今回は、それとは違う方法を紹介したいと思います。
エクセルで複数のプルダウンリストを連動させる
なお、今回は、
話を簡単にするために、
小項目のプルダウンリストは、項目数を「固定」する
(=余計な空白が出てくる可能性がある)
という前提で話をしていきます。
今回は、
E列~M列までの合計9列分を、
小項目のプルダウンリストとして
表示させるようにしたいと思います。
大項目のプルダウンリストは適当に作る
大項目のプルダウンリストは、
D2セル~D5セルを使って表示させます。
これは、
前の記事で書いた方法がそのまま使えますので、
作り方は省略します。
小項目のプルダウンリストはどの部分を表示させればいい?
さて、
次に、問題の小項目のほうです。
小項目のプルダウンリストですが、
例えば、
A2セル(大項目)に「魚」と入っている場合、
プルダウンリストとしては、
次の部分を表示させたいわけです。
当然、
A2セルに他の値が入れば、
プルダウンリストとして表示させたい部分は、
他の行に変わります。
このように、
選択したい行が「動的」に変わる場合にも、
offset関数が使えます。
offset関数とmatch関数を組み合わせる
offset関数とmatch関数を組み合わせて、
「元の値」欄に、次のような計算式を入れてみましょう。
※「A2」の部分だけは相対参照です。
マウスでセルを選択していると、勝手に絶対参照になるので、
この部分だけ、手で相対参照に変更してください。
これで、小項目のプルダウンリストを作ることができます。
この計算式は何をやっているのか?
今回も、
ポイントになるのは、offset関数です。
offset関数は、次のような動きをしています。
結局、
match関数で大項目で選択された内容に応じて、
「どの行を表示するか」を取得することで、
小項目のプルダウンを動的に変化させているのです。
名前定義を使う方法との比較
小項目のプルダウンリストを表示する方法として、
「名前定義」を使う方法が一般的です。
その方法と比較すると、
今回の方法は、
関数の使い方が、やや複雑なのが欠点ですが、
次のようなメリットがあります。
- 名前定義をしないで済む
-
名前定義をすると、名前の管理が面倒なので、
使わないでいい場面なら使わないほうがいいです。 - プルダウンリストへの大項目の追加が簡単
-
名前定義をする方法だと、
プルダウンリストに、大項目を追加した場合に、
名前定義のメンテナンスをしないといけません。今回の方法であれば、そのような特別なメンテナンスは不要です。
私個人としては、
メリットがかなり大きいので、
名前定義を使うよりは、今回紹介した方法を使うことをおすすめします。