ドロップダウンリストを連動させる

前回の記事でドロップダウンリストの設定の仕方についてまとめました。
まだご覧になっていない方はこちらからどうぞ。

さて、今回は動作が連動するドロップダウンリストを作成していきたいと思います。前回の応用編ですね。動作が連動するっていうのは、プロ野球で例えると大きく分けてセ ・ リーグとパ ・ リーグに分かれていて、セ・リーグの中に巨人、阪神、ヤクルト、広島、中日、DeNAの6つのチームがありますよね。(野球わからない方、すみません。)

これを単純にドロップダウンリストにしようとすると、

  • リーグを選択するドロップダウンリストの項目:セ・リーグ、パ・リーグ
  • チームを選択するドロップダウンリストの項目: 巨人、阪神、ヤクルト、広島、中日、DeNA

となるので、パ・リーグを選択しても巨人が選択できてしまいます。これを避けるために、リーグを選択するドロップダウンリストの選択内容に従ってチーム選択のドロップダウンリストの内容を動的に変える方法についてお伝えしようと思います。

元となるドロップダウンリストを作成する

まずは準備。今回はドロップダウンリストを2つ作成します。冒頭に述べた例を使用して、日本のプロ野球リーグ2つを含むドロップダウンリストと、それぞれのリーグに含まれるチームのドロップダウンリストを作成していきます。今回は表形式でドロップダウンリストの元ネタを準備します。

こんな風に入力してみました。

ドロップダウンリストの元ネタを準備

セ・リーグとパ・リーグを横軸に置いて、縦にチームをぶら下げました。

テーブルにするために表の内容を全選択

これを見やすいようにテーブルにします。テーブルにするには、[挿入]タブの[テーブル]を選択します。

表をテーブルに変換

すると、テーブルにするデータの範囲を聞かれるので、データの範囲を指定します。(デフォルトでデータ範囲が指定されているはずです)
また、「先頭行をテーブルの見出しとして使用する」のチェックボックスはONにしておきましょう。これをONにすると、先頭行を見出しとして認識してくれます。

テーブルに変換するデータ範囲の指定

上記手順でテーブルを作成した結果がこちら。

表がテーブルに変換された様子

次に、テーブルの見出し部分を選択して、名前の定義をします。ここでは「リーグ名」としました。

テーブルヘッダーに対して名前の定義

次に、セ・リーグの各チームに対して名前の定義をします。ここでは選択範囲に対して名前の定義をする技を使います。ここがリーグのドロップダウンリストに対して動的に変わるドロップダウンリストになります。

リーグに属するチームに対して名前の定義

[数式]タブ→[選択範囲から作成]を選択。

選択範囲から名前の定義

すると下のようなダイアログが出るので、この例ではC列に縦にチームを定義しているので 「上端行」を選択します。 横方向に定義している場合は「左端列」を選択することになります。

上端行を選択

同じようにパ・リーグに対しても選択範囲から名前の定義をします。

同様に動的に表示するドロップダウンリストの項目に対する名前の定義を行う

ここで、実施してきた名前の定義を確認してみます。[数式]タブ→[名前の管理]を選択。

[名前の管理]から名前の定義を確認

下図のようになっていればOK。 「リーグ名」、「セ・リーグ」、「パ・リーグ」が作成されていますね。「テーブル1」というのは最初に作成したテーブルのことです。

作成してきた名前の定義を確認

ここまででデータの準備はOKです。

動的ドロップダウンリストを作成する

ここまで、ドロップダウンリストの中身についての準備をしてきました。ここからは実際にドロップダウンリストを設置していきます。
まずはドロップダウンリストを設置する場所を作ります。例として下のような表を作成しました。

ドロップダウンリストを設置するための場所を作成

リーグのドロップダウンリストを設置します。内容は「セ・リーグ」と「パ・リーグ」ですね。
リーグを選択するドロップダウンリストを設置したいセルを選択します。

ドロップダウンリストを設置したいセルを選択

[データ]タブの[データの入力規則]を選択して設定画面を出します。

[データの入力規則]を選択

開いたダイアログの[設定]タブの[入力値の種類]でリストを選択。[元の値]の欄には「=リーグ名」と入力しましょう。「リーグ名」とは、名前の定義で作成したものですね。わからなくなった方は当記事の上のほうまで戻って再確認してみましょう。

ドロップダウンリストの項目設定

これでリーグ選択のためのドロップダウンリストの設置は完了です。そのままチーム選択のドロップダウンリストを設置していきましょう。チーム選択のドロップダウンリストの項目はリーグ選択ドロップダウンリストの内容によって変わるように設定していきます。とは言っても難しい設定は何もないので安心してください。

まずはこれまで通り、チーム選択のドロップダウンリストを設置したいセルを選択します。

動的ドロップダウンリストを設置するセルを選択

同じように[データ]タブの[データの入力規則]を選択して[入力値の種類]に[リスト]を設定。
次が重要。[元の値]の欄に

=INDIRECT($C3:$C4)

と設定します。下図のようになります。

INDIRECT関数を使用

INDIRECTってなんじゃ!?となる方も大勢いると思いますので、詳しくは別記事にまとめますが、簡単に説明しておくと、INDIRECT関数とは参照先の名前の定義をもとに値をとってくるものです。
つまり、これまで説明してきた例でいうと、上図の[C3]セルにはリーグ名が入りますよね。「セ・リーグ」という名前の定義をしたのを覚えていますか?INDIRECT関数では、この「セ・リーグ」という名前の定義の中から値をとってきてくれる機能です。ここではとりあえずフーン程度でOKです。

データの入力規則を設定して[OK]をクリックすると下のように警告が出ますが、無視して「はい」を選択します。

警告メッセージを無視

これで準備完了です!ちょっと手順が多くて混乱される方もいるかと思いますが、同じ手順で手を動かしてみてもらえれば身につくはずです。わからないところがあれば遠慮なく私に問い合わせてください。

問合せページはこちらです。

動作確認

ここまで設定してきた内容で動作確認してみましょう。
リーグ名のドロップダウンリストでセ・リーグを選択したらセ・リーグのチームのみがドロップダウンリストに出てくるはずですね!リーグのドロップダウンリストでセ・リーグを選択してみましょう。

動的出力の元となるドロップダウンリストを選択

次に、チームのドロップダウンリストをクリックしましょう。下図のようにセ・リーグのみが出力されていればOKです。

動的にドロップダウンリストの項目が出力されていることを確認(セ・リーグ)

パ・リーグでも同じように確認してみてください。

動的にドロップダウンリストの項目が出力されていることを確認(パ・リーグ)

まとめ

いかがでしたでしょうか。単純なドロップダウンリストの作成をちょっと応用してドロップダウンリストの内容を動的に変えてみました。
手順が多いので難しく感じた方も多いと思います。今何をやっているのかを見失いそうになりますが、1つ1つ目的をもって作業していけば躓かずにできるはずです。
今回の記事ではプロ野球チームを例にとりましたが、地方名と都道府県の組み合わせや事業部と部署の組み合わせ等にも使える技です。是非身に着けていただいて、実務で使ってみてください。上司からの評価も上がるはずです。

ということで、最後にドロップダウンリストの内容を動的に変えるための手順をまとめます。

  1. ドロップダウンリストの元ネタのテーブルを作成する
  2. ドロップダウンリストの元ネタに名前の定義をする
  3. ドロップダウンリストを作成する際に動的に項目を出し分けたいときはINDIRECT関数を使用する

でした。

最後までお読みいただき、ありがとうございます。
不明点がありましたら遠慮なくお問い合わせください。