選択肢の内容に応じて次の選択肢が変わる2段階プルダウンは、データ入力の効率を大きく向上させる便利な機能です。例えば、都道府県を選ぶと市区町村の候補が絞り込まれるようなリストを、Googleスプレッドシートで簡単に実装できます。この記事では、INDIRECT関数とデータ入力規則を組み合わせて、連動式のプルダウンリストを作成する手順を詳しく解説します。具体的なサンプルデータを使いながら、初心者の方でも迷わず設定できるように説明します。
【要点】2段階プルダウンを実装するための3つのポイント
- データ入力規則によるドロップダウンリスト: セルにリストを表示する基本的な機能です。元のデータを範囲指定してリスト項目を設定します。
- INDIRECT関数による動的な範囲参照: セルの文字列を範囲として解釈する関数です。1つ目の選択結果に応じて2つ目のリストの参照先を切り替えます。
- 名前付き範囲の活用: 各カテゴリのデータに名前を付けておくことで、INDIRECT関数から参照しやすくなります。名前の規則を統一すると管理が簡単です。
ADVERTISEMENT
2段階プルダウンとは?INDIRECT関数の仕組み
2段階プルダウンとは、1つ目のプルダウンで選択した値に応じて、2つ目のプルダウンの選択肢が自動的に変わる仕組みです。例えば、果物の種類を選ぶと、その果物に属する品種のリストが表示されるといったケースが考えられます。この連動を実現するためのキーとなるのがINDIRECT関数です。INDIRECT関数は、文字列で指定されたセル参照や範囲を実際の参照に変換します。つまり、セルに入力されたテキストを元に、動的に範囲を指定できるようになります。これにより、1つ目のプルダウンの選択結果をINDIRECT関数の引数として利用し、2つ目のプルダウンのリストを動的に生成できるのです。
2段階プルダウンの作成手順
それでは、実際の操作手順を説明します。サンプルとして、大分類「果物」と「野菜」を1つ目に選び、2つ目にそれぞれの具体的な品目が表示されるリストを作成します。
手順1:元データを準備する
- 大分類のリストを作成する
任意のシート(例:シート名「データ」)のセルA1に「果物」、A2に「野菜」と入力します。これが1つ目のプルダウンの選択肢になります。 - 各カテゴリのデータを別々の列に準備する
同じシートのB列に果物の品目リスト(例:B1「りんご」、B2「みかん」、B3「ぶどう」など)を入力します。C列に野菜の品目リスト(例:C1「キャベツ」、C2「レタス」、C3「トマト」など)を入力します。 - 各列に名前付き範囲を設定する
果物のデータ範囲(B1:B3)を選択し、メニュー「データ」→「名前付き範囲」を開きます。「範囲に名前を付ける」で名前を「果物」と入力し、「完了」をクリックします。同様に野菜のデータ範囲(C1:C3)にも名前「野菜」を設定します。ここで、名前は大分類の値と完全に一致させる必要があります。今回の場合、大分類の値が「果物」「野菜」なので、名前付き範囲も「果物」「野菜」とします。
手順2:1つ目のプルダウンを設定する
- プルダウンを表示したいセルを選択する
実際に使用するシート(例:シート名「入力」)のセルA1を選択します。 - データ入力規則を開く
メニュー「データ」→「データの入力規則」をクリックします。 - リストを設定する
「条件」で「リストから選択」を選び、範囲に元データシートの大分類の範囲(例:「データ!A1:A2」)を指定します。「保存」をクリックします。これでセルA1にドロップダウンリストが表示され、「果物」と「野菜」から選べるようになります。
手順3:2つ目のプルダウンを設定する(INDIRECT関数使用)
- 2つ目のプルダウンを表示するセルを選択する
同じシートのセルB1を選択します。 - データ入力規則を開き、カスタム数式を選択する
メニュー「データ」→「データの入力規則」を開き、「条件」で「カスタム数式」を選びます。 - INDIRECT関数を入力する
数式欄に「=INDIRECT(A1)」と入力します。この数式は、セルA1の文字列(「果物」または「野菜」)を範囲名として解釈し、その範囲の値をリストとして表示します。つまり、A1で「果物」を選べば名前付き範囲「果物」の内容がリストに表示されます。「保存」をクリックします。 - 動作を確認する
セルA1で「果物」を選択すると、セルB1のプルダウンに「りんご」「みかん」「ぶどう」が表示されます。「野菜」を選べば「キャベツ」「レタス」「トマト」が表示されるはずです。これで2段階プルダウンの完成です。
手順4:プルダウンを他の行にもコピーする(応用)
- セルをコピーする
A1とB1を選択し、Ctrl+Cでコピーします。下の行(例:A2、B2)にCtrl+Vで貼り付けます。これにより、複数行で同様の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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
