ADVERTISEMENT

【Googleスプレッドシート】2段階プルダウンを実装!連動式リストの作り方

【Googleスプレッドシート】2段階プルダウンを実装!連動式リストの作り方
🛡️ 超解決

選択肢の内容に応じて次の選択肢が変わる2段階プルダウンは、データ入力の効率を大きく向上させる便利な機能です。例えば、都道府県を選ぶと市区町村の候補が絞り込まれるようなリストを、Googleスプレッドシートで簡単に実装できます。この記事では、INDIRECT関数とデータ入力規則を組み合わせて、連動式のプルダウンリストを作成する手順を詳しく解説します。具体的なサンプルデータを使いながら、初心者の方でも迷わず設定できるように説明します。

【要点】2段階プルダウンを実装するための3つのポイント

  • データ入力規則によるドロップダウンリスト: セルにリストを表示する基本的な機能です。元のデータを範囲指定してリスト項目を設定します。
  • INDIRECT関数による動的な範囲参照: セルの文字列を範囲として解釈する関数です。1つ目の選択結果に応じて2つ目のリストの参照先を切り替えます。
  • 名前付き範囲の活用: 各カテゴリのデータに名前を付けておくことで、INDIRECT関数から参照しやすくなります。名前の規則を統一すると管理が簡単です。

ADVERTISEMENT

2段階プルダウンとは?INDIRECT関数の仕組み

2段階プルダウンとは、1つ目のプルダウンで選択した値に応じて、2つ目のプルダウンの選択肢が自動的に変わる仕組みです。例えば、果物の種類を選ぶと、その果物に属する品種のリストが表示されるといったケースが考えられます。この連動を実現するためのキーとなるのがINDIRECT関数です。INDIRECT関数は、文字列で指定されたセル参照や範囲を実際の参照に変換します。つまり、セルに入力されたテキストを元に、動的に範囲を指定できるようになります。これにより、1つ目のプルダウンの選択結果をINDIRECT関数の引数として利用し、2つ目のプルダウンのリストを動的に生成できるのです。

2段階プルダウンの作成手順

それでは、実際の操作手順を説明します。サンプルとして、大分類「果物」と「野菜」を1つ目に選び、2つ目にそれぞれの具体的な品目が表示されるリストを作成します。

手順1:元データを準備する

  1. 大分類のリストを作成する
    任意のシート(例:シート名「データ」)のセルA1に「果物」、A2に「野菜」と入力します。これが1つ目のプルダウンの選択肢になります。
  2. 各カテゴリのデータを別々の列に準備する
    同じシートのB列に果物の品目リスト(例:B1「りんご」、B2「みかん」、B3「ぶどう」など)を入力します。C列に野菜の品目リスト(例:C1「キャベツ」、C2「レタス」、C3「トマト」など)を入力します。
  3. 各列に名前付き範囲を設定する
    果物のデータ範囲(B1:B3)を選択し、メニュー「データ」→「名前付き範囲」を開きます。「範囲に名前を付ける」で名前を「果物」と入力し、「完了」をクリックします。同様に野菜のデータ範囲(C1:C3)にも名前「野菜」を設定します。ここで、名前は大分類の値と完全に一致させる必要があります。今回の場合、大分類の値が「果物」「野菜」なので、名前付き範囲も「果物」「野菜」とします。

手順2:1つ目のプルダウンを設定する

  1. プルダウンを表示したいセルを選択する
    実際に使用するシート(例:シート名「入力」)のセルA1を選択します。
  2. データ入力規則を開く
    メニュー「データ」→「データの入力規則」をクリックします。
  3. リストを設定する
    「条件」で「リストから選択」を選び、範囲に元データシートの大分類の範囲(例:「データ!A1:A2」)を指定します。「保存」をクリックします。これでセルA1にドロップダウンリストが表示され、「果物」と「野菜」から選べるようになります。

手順3:2つ目のプルダウンを設定する(INDIRECT関数使用)

  1. 2つ目のプルダウンを表示するセルを選択する
    同じシートのセルB1を選択します。
  2. データ入力規則を開き、カスタム数式を選択する
    メニュー「データ」→「データの入力規則」を開き、「条件」で「カスタム数式」を選びます。
  3. INDIRECT関数を入力する
    数式欄に「=INDIRECT(A1)」と入力します。この数式は、セルA1の文字列(「果物」または「野菜」)を範囲名として解釈し、その範囲の値をリストとして表示します。つまり、A1で「果物」を選べば名前付き範囲「果物」の内容がリストに表示されます。「保存」をクリックします。
  4. 動作を確認する
    セルA1で「果物」を選択すると、セルB1のプルダウンに「りんご」「みかん」「ぶどう」が表示されます。「野菜」を選べば「キャベツ」「レタス」「トマト」が表示されるはずです。これで2段階プルダウンの完成です。

手順4:プルダウンを他の行にもコピーする(応用)

  1. セルをコピーする
    A1とB1を選択し、Ctrl+Cでコピーします。下の行(例:A2、B2)にCtrl+Vで貼り付けます。これにより、複数行で同様の2段階プルダウンが使用できます。
  2. INDIRECTの参照が自動調整されることを確認する
    コピーしたセルでは、INDIRECT関数の引数が自動的にA2に変わります。そのため、各行で独立した選択が可能です。

2段階プルダウンでよくあるトラブルと対処法

2つ目のプルダウンに正しいリストが表示されない

最も多い原因は、名前付き範囲の名前と1つ目のプルダウンの選択肢が一致していないことです。名前付き範囲は大文字小文字を区別するため、完全に同じ文字列である必要があります。また、名前付き範囲にスペースや特殊文字が含まれていないか確認してください。INDIRECT関数の引数が正しい範囲名を指しているかもチェックしましょう。

INDIRECT関数が#REF!エラーになる

このエラーは、指定された範囲名が存在しない場合に発生します。名前付き範囲が正しく設定されているか、または1つ目のプルダウンで選択肢が空欄の場合はエラーになります。対策として、IFERROR関数でエラーを隠すこともできますが、根本的にはデータの整合性を確認してください。

プルダウンの選択肢が更新されない

元データのリストを変更した場合、プルダウンに反映されないことがあります。データ入力規則は元データの範囲を参照しているため、範囲を拡張する必要があります。名前付き範囲を使用している場合は、範囲を動的に拡張するためにOFFSET関数やARRAYFORMULAを併用する方法もあります。

ADVERTISEMENT

2段階プルダウンと他の方法の比較

方法 メリット デメリット
INDIRECT関数+名前付き範囲 設定が簡単でメンテナンスしやすい 名前の管理が必要、大量データでは遅くなる場合がある
Apps Scriptによるカスタムメニュー 高度な制御が可能、動的な更新に対応 スクリプトの知識が必要、設定が複雑
QUERY関数+データの入力規則 フィルタリングやソートが可能 INDIRECTのような動的参照は苦手

まとめ

この記事では、Googleスプレッドシートで2段階プルダウンを作成する方法を解説しました。INDIRECT関数と名前付き範囲を組み合わせることで、1つ目の選択に応じて2つ目の選択肢が動的に変わる連動式リストを簡単に実装できます。具体的には、元データの準備、名前付き範囲の設定、データ入力規則の適用という3ステップで完了します。このテクニックを応用すれば、3段階以上のプルダウンや、別シートのデータを参照する複雑な連動リストも作成可能です。ぜひ実際の業務やプロジェクトで活用してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。