はじめに
2つのプルダウンリスト(ドロップダウンリスト)を連携させる
EXCELでアンケート表とか、選択リストを作ってるとき、1つのプルダウン項目の答えを利用して、次のプルダウンリスト(ドロップダウンリスト)をそれぞれ別のものに変えたい時ありますよね?今日はこれのやり方を説明します。完成イメージはこちらです。
・C12セルで選んだ商品によって、C13セルのプルダウンリスト(ドロップダウンリスト)が変更される
・オプションテーブルのオプションを増やすと、プルダウンリスト(ドロップダウンリスト)に反映される
作業の流れ
1.商品選択のプルダウン(ドロップダウン)を設定する
2.オプション用のプルダウン(ドロップダウン)の元データをテーブルで設定する
3.オプション選択ようのプルダウン(ドロップダウン)をINDIRECT関数で設定する
ステップは上記の3つです。
1.商品選択のプルダウン(ドロップダウン)を設定する
まずはこんな感じでひな形を作ります。
「B3:B7」の範囲が、C12に設定したい商品選択のプルダウンリスト(ドロップダウンリスト)です。入力規則の機能を使ってプルダウンを設定しましょう。
はい以上ですね。以前に入力規則の記事も書いてますので分からない方はそちらも参考にしてください。
※過去投稿:データの入力規則
2.オプション用のプルダウン(ドロップダウン)の元データをテーブルで設定する
次に、オプション用の元データを設定していきます。今回はこれがポイントですのでしっかり確認してください。
ポイント1:テーブル形式に変換する。
ポイント2:設定したテーブルの名前を商品選択で設定したプルダウンリスト(ドロップダウンリスト)の中身の項目名と同じにする。
動画で一気に設定工程を見てみましょう。
こんな感じで設定出来ましたね。
ハンバーガーテーブル・カレーテーブル・唐揚げテーブル・カツ丼テーブルを作成して、各々のテーブルの名前を、商品名のプルダウンで設定した項目名に変更します。
ハンバーガーテーブルであれば、ハンバーガーテーブルの中をポチッと押すと右上に「テーブルデザイン」というタブが出てきます。一番左のリボンに「テーブル名:」という項目がありますのでその中を「ハンバーガー」と変更します。カレーテーブル・唐揚げテーブル・カツ丼テーブルも同じ様に設定します。
この設定した名前を、次に説明する「INDIRECT関数」で使用します。
3.オプション選択用のプルダウン(ドロップダウン)をINDIRECT関数で設定する
最後に、オプション選択用のプルダウン(ドロップダウン)を設定していきます。先に動画で見てください。
商品選択のプルダウン(ドロップダウン)を設定した時と同じ様に、C13セルに入力規則のプルダウンリスト(ドロップダウンリスト)を設定していきます。
「入力規則の種類」は「リスト」。ここまでは同じですね。そしてここからINDIRECT関数が登場です。
「元の値」に「=INDIRECT($C$12)」と入力して決定します。
「元の値はエラーと判断されます。続けますか?」というように、ミスったか!?と思うメッセージが流れますが、無視して「はい」を選択してください。
これで設定は完了です。
「INDIRECT関数」は、難しい言葉でいうと、「引数に指定されたオブジェクトを返す」という関数なのですが、それではよくわからないと思いますので噛み砕いて解説します。
=INDIRECT(参照文字列)
オブジェクトというのは、モノと考えてください。EXCELで言うとワークブック自体とか、ワークシート自体とか、セルもオブジェクトですね。今回設定した「テーブル」もオブジェクトの一つです。オブジェクトには名前があります。セルでいうとおなじみの「A1」とか「B4」とか、これが名前です。今回設定してもらったテーブルも、一つずつ名前を設定してもらったと思います。「ハンバーガー」とか「唐揚げ」とかですね。「ハンバーガー」という名前のオブジェクトを作っていた訳です。
INDIRECT関数は、引数(上で言う参照文字列)にこのオブジェクトの名前を指定することで、そのオブジェクトを返してくれます。
今回はC12セルで選択する名前が、テーブルで設定した名前と同じになっていますので、入力規則で指定した「=INDIRECT($C$12)」の「$C$12」部分が、選択によって「ハンバーガー」になったり、「唐揚げ」になったりすることになります。
C12で「ハンバーガー」を選んでいると「=INDIRECT(”ハンバーガー”)」
C12で「唐揚げ」を選んでいると「=INDIRECT(”唐揚げ”)」という形になるのが分かると思います。
このように、入力規則のリストに、テーブルの名前で設定することによって、そのテーブル名の変更と連動させて、表示されるプルダウンリストの中身を変えることができるという仕組みです。
ちなみに、”名前”はテーブルではなく、普通の範囲につける事もできるので、そいうった設定も可能なのですが、テーブル形式で設定することによって、元データのリスト項目の変更や増減にも対応が可能なので、今回はテーブルに名前をつけました。
※過去記事:入力規則の元データをテーブルにすると、項目の増減が楽ちん!
まとめ
「INDIRECT関数」は、オブジェクトの名前を指定することで、その参照先を返しますので、このようにテーブルだけでなく、普通にセルの名前を指定することで、そのセルの値を返すことも出来ます。
この関数は、いろんな組み合わせのアイデアで威力を発揮するので、使いこなせると面白いですよ!
コメント