投稿: 2022/09/14
更新: 2023/02/15
【Spread Sheat】2つのプルダウンリスト連動させ、これを複数行に渡って設置したい。
やりたいこと
以下の動画のように、一つ目のプルダウンの選択内容に応じて二つ目のプルダウンの候補値が動的に変化する状態を目指します。これを複数行に渡って設置します。
以下の例では、一つ目のプルダウンで「あ行」を選択した場合には二つ目の候補が「あいうえお」、「か行」を選択した場合には「かきくけこ」となっています。

STEP 1. 候補となる元データを準備する
入力用シートとは別に新たなシートを作成し、候補となるデータを以下のように準備します。下記例ではこのシートに「マスタ」という名称を付けています。

STEP 2. プルダウンの参照用シートを作成する
新しいシートを作成して準備を進めていきます。ここではこのシートに「プルダウン候補」という名称を付けます。
2-1. 第一プルダウンの候補を引っ張る
一つ目のプルダウンの候補となる行データをマスタからこのシートに引っ張ってきます。
以下の関数を使います。
- UNIQUE: 値が重複しないように参照する
- IFERROR: 空白行を取り除く
- TRANSPOSE: 行方向(縦方向)に取得される候補を列方向(横方向)に転置する
具体的には、「プルダウン候補」シートの A1 セルに次の式を入力します。
1=TRANSPOSE(IFERROR(UNIQUE('マスタ'!A2:A)))
2-2. 第二プルダウンの候補を引っ張る
一つ目のプルダウンの候補の下に第二プルダウンの候補を表示します。
以下の関数を使います。
- QUERY: キーが一致する行を複数取得する(VLOOKUP の複数行取得版)
具体的には、「プルダウン候補」シートの A2 セルに次の式を入力します。
1=QUERY('マスタ'!$A:$B, "select B where A = '"&A1&"'")
「あ行」の候補が表示できたら、A2 セルをドラッグして「わ行」までデータを埋めます。

2-3. 名前付き範囲の定義をする
各行ごとに名前付き範囲を定義していきます。
まずは「あ行」の名前付き範囲を定義します。名前付き範囲を定義するには次の手順で操作します。
- A2-A6 セルをドラッグして範囲選択する
- 選択範囲の上で右クリック
- 「セルでの他の操作項目を表示」にマウスホバー
- 「名前付き範囲を定義」をクリック
- 範囲の名前に「あ行」と入力

「あ行」が完了したら、同様の手順で「わ行」まで名前付け範囲を定義します。
STEP 3. 入力用シートにプルダウンを設置する
3-1. 一つ目のプルダウンを設置する
まずは A2 セルにデータの入力規則を設定します。次の手順で操作します。
- 入力用シートを選択する
- A2 セルで右クリック
- [セルでの他の操作項目を表示] > [データの入力規則]
- 「条件」に「リストを範囲で指定」を設定
- 範囲に「=‘プルダウン候補’!$1:$1」を入力
- 「保存」


3-2. 一つ目のプルダウンの値に応じた候補を取得する
C2 セルに次の関数を入力します。
1=IFERROR(TRANSPOSE(INDIRECT(A2)))INDIRECT 関数を使用して名前付き範囲を参照することで、一つ目のプルダウンの値に応じて候補を動的に取得することができます。

3-3. 二つ目のプルダウンを設置する
- B2 セルを右クリック
- [セルでの他の操作項目を表示] > [データの入力規則]
- 「条件」に「リストを範囲で指定」を設定
- 範囲に「=C2:2」を入力
- 「保存」
- 再度 B2 セルを右クリック
- [セルでの他の操作項目を表示] > [データの入力規則]
- 範囲が「=$C$2:$2」に自動で変換されている場合には「=C2:2」に修正する
- 「保存」

3-4. オートフィルで関数をコピーする
- A2:C2 をドラッグで範囲選択
- 選択範囲を下方向にドラッグして関数をコピー
