スプレッドシートのプルダウンの作り方|連動プルダウンまで

スプレッドシートのプルダウンの作り方|連動プルダウンまで

執筆者:

カテゴリ:

プルダウン(ドロップダウンリスト)は、選択肢から選ばせて入力させる機能です。

見た目の問題ではありません。表記ゆれを防ぐ最も確実な方法です。「東京」「東京都」「トウキョウ」が混在すると、SUMIFCOUNTIF も正しく動かなくなります。入力時に弾くのが最も安上がりです。

作り方(2通り)

「データ → データの入力規則」を開き、条件で「プルダウン」を選びます。

方法1:選択肢を直接入力する

選択肢をその場で打ち込みます。

未処理, 処理中, 完了

手軽ですが、選択肢を変えるたびに設定を開く必要があります。

方法2:別シートのリストを参照する(推奨)

「プルダウン(範囲内)」を選び、リストの範囲を指定します。

=マスタ!A2:A100

リストに追加するだけで選択肢が増えます。 設定画面を開く必要がありません。

複数人で使うファイルや、選択肢が増減するものは必ずこちらにしてください。

選択肢が増えても直さない作り方

範囲を A2:A100 のように広めに取ると、空欄も選択肢として並んでしまう環境があります。

これを避けるには、FILTER で空を除いた作業列を作り、そこを参照します。

マスタ!B2:  =FILTER(A2:A100, A2:A100<>"")
入力規則:    =マスタ!B2:B100

リストに追記すれば自動で反映され、空欄も出ません。

重複を除きたいなら UNIQUE を重ねます。

=UNIQUE(FILTER(A2:A100, A2:A100<>""))

「無効なデータ」の扱い

入力規則には2つのモードがあります。

設定 動き
警告を表示 リスト外も入力できる(赤い印が付く)
入力を拒否 リスト外は入力できない

表記ゆれを防ぐのが目的なら「入力を拒否」にしてください。 警告だけだと、無視して入力されます。

ただし、既にデータが入っている列に後から設定しても、既存の値は変わりません。 赤い印が付くだけです。設定前のデータは別途整える必要があります。

連動プルダウンの作り方

「大分類を選ぶと、小分類の選択肢が変わる」という仕組みです。INDIRECT を使います。

手順

1. 大分類のリストを作る

マスタシートのA列に「果物」「野菜」と並べます。

2. 小分類ごとに名前付き範囲を作る

  • 果物のリスト(りんご、みかん…)を選択 → 「データ → 名前付き範囲」→ 名前を 果物
  • 野菜のリスト(にんじん、キャベツ…)を選択 → 名前を 野菜

名前付き範囲の名前と、大分類の値を完全に一致させるのが必須です。

3. 大分類のセルにプルダウンを設定

範囲はマスタのA列。

4. 小分類のセルの入力規則をカスタム数式にする

=INDIRECT($A2)

A2で「果物」を選ぶと、果物 という名前付き範囲がリストになります。

注意点

  • 名前付き範囲にスペースや記号は使えません。 大分類の値も揃えてください
  • 大分類を変更しても、小分類の値は自動で消えません。 手動でクリアするか、条件付き書式で不整合を目立たせてください
  • INDIRECT は揮発性関数なので、数百行に置くと重くなります

行数が多い場合は、連動プルダウンを諦めて単一のリストに「果物:りんご」のような形で並べるほうが軽くて確実なことがあります。

選択肢によって色を変える

プルダウン自体に色を設定できます(新しいUIでは入力規則の画面から直接指定できます)。

行全体に色を付けたいなら、条件付き書式を使ってください。

=$D2 = "完了"

列だけを $ で固定するのがポイントです。範囲を A2:F1000 にすれば、D列が「完了」の行全体に色が付きます。

ステータスごとに色を分けるなら、条件付き書式のルールを複数追加します。上から順に評価されるので、優先したいものを上に置いてください。

チェックボックスとの使い分け

状況 使うもの
選択肢が3つ以上 プルダウン
ON / OFF の2択 チェックボックス
集計したい どちらでも(チェックボックスは TRUE/FALSE で数えやすい)

集計との組み合わせ

プルダウンで入力を統一すると、集計が確実になります。

=COUNTIF(D:D, "未処理")
=SUMIFS(C:C, D:D, "完了")

ステータスごとの件数を一度に出すなら QUERY が便利です。

=QUERY(A:D, "select D, count(A) where D <> '' group by D", 1)

選択肢が増えても数式を直す必要がありません。

よくある問題

プルダウンが表示されない

  • セルの入力規則が設定されていない
  • 「セル内にドロップダウンリストを表示」のチェックが外れている(古いUI)

選択肢に空欄が並ぶ

範囲を広く取りすぎています。FILTER で空を除いた作業列を参照してください。

リストを追加したのに反映されない

入力規則の範囲が、追加した行を含んでいません。範囲を広めに取り直すか、FILTER を使った作り方に変えてください。

連動プルダウンが動かない

  • 名前付き範囲の名前と、大分類の値が一致していない
  • 名前にスペースや記号が含まれている
  • カスタム数式の参照が $A2 ではなく $A$2 になっている(行を固定すると全行が同じリストになります)

Excelとの違い

考え方は同じですが、細部が異なります。

Excel スプレッドシート
設定場所 データの入力規則 データの入力規則
リスト参照 名前付き範囲か直接指定 範囲を直接指定できる
連動 INDIRECT + 名前付き範囲 同じ
選択肢の色分け 条件付き書式のみ 入力規則で直接指定可

Excelでは別シートのリストを参照するのに名前付き範囲が必要でしたが、スプレッドシートは範囲を直接指定できます。設定が簡単なのはスプレッドシートです。


選択肢をどこに置くかで運用が変わる

プルダウンの選択肢は、直接入力する方法と、範囲を参照する方法があります。どちらを選ぶかで、その後の運用が大きく変わります。

直接入力は、設定画面に候補を並べる方法です。手軽ですが、候補を変更するには設定画面を開き直す必要があります。同じ選択肢を複数の列で使っている場合、すべてを直し回ることになります。

範囲を参照する方法は、選択肢の一覧をシート上に置き、その範囲を指定します。候補の追加や変更は、その範囲に行を足すだけで済みます。複数の列で同じ範囲を参照していれば、一箇所を直すだけで全部に反映されます。

実務では、後者を既定にしてください。手軽さの差はわずかですが、保守の差は大きくなります。

選択肢の一覧は、専用のシートを作って置くのが分かりやすくなります。マスタ用のシートを一枚用意し、そこに各種の選択肢をまとめます。使うときは非表示にしておけば、利用者が誤って編集することもありません。

さらに、範囲を固定ではなく可変にしておくと、候補を追加したときに自動で反映されます。重複を除く関数や抽出の関数の結果を参照する形にすれば、実データから選択肢を自動生成することもできます。


二段階で連動させる

大分類を選ぶと、小分類の候補がそれに応じて変わる。この連動プルダウンは、入力の精度を大きく上げます。

作り方の基本は、小分類の一覧を大分類ごとに用意し、それぞれに名前を付けておくことです。そのうえで、小分類のプルダウンの参照先を、大分類のセルの値から名前を組み立てる形で指定します。文字列から参照を作る関数を使います。

実装で注意すべき点がいくつかあります。まず、名前として使える文字に制限があります。空白や記号は使えず、数字から始めることもできません。大分類の名前に空白が含まれるなら、名前を付けるときに置き換える必要があります。

次に、大分類を変更しても、小分類のセルに残っている古い値は消えません。整合しない組み合わせが残ります。条件付き書式で不整合を目立たせるか、定期的に確認する運用を決めてください。

三つ目に、行を挿入すると参照が崩れる場合があります。文字列から参照を作る関数は、行の挿入に追従しません。表の構造を変える予定があるなら、別の方法を検討してください。

三段階以上に増やすことも技術的には可能ですが、設定が複雑になり、保守が難しくなります。二段階までに留めるか、階層をやめて分類の列を増やす設計に変えるほうが実務的です。


入力を制限するという発想

プルダウンの本来の目的は、選ぶのを楽にすることではなく、表記のゆれを防ぐことです。

同じ内容を人が自由に入力すると、必ずゆれます。「東京都」と「東京」、「株式会社」と「(株)」、全角と半角。集計の段階でこれらが別のものとして扱われ、数が合わなくなります。

プルダウンにしておけば、入力される値が確定します。集計は素直に動き、突き合わせも正確になります。

さらに、入力規則には「範囲外の値を拒否する」設定があります。既定では警告が出るだけで入力自体はできてしまうことがあるので、確実に防ぎたいなら拒否に設定してください。

ただし、貼り付けの操作では入力規則が働かないことがあります。大量のデータを貼り付ける運用では、防ぎきれません。この場合は、貼り付け後に不正な値がないかを確認する仕組みを用意してください。条件付き書式で、選択肢に含まれない値に色を付ける方法が使えます。


選択肢が多すぎるとき

候補が数十を超えると、プルダウンは使いにくくなります。目的の項目を探すのに時間がかかるためです。

対処としては、まず階層に分けることを検討してください。大分類で絞れば、小分類の候補は現実的な数に収まります。

それでも多い場合は、プルダウンをやめて、入力補完に頼る方法があります。過去の入力履歴から候補が表示されるので、数文字打てば絞り込めます。ただし表記のゆれは防げません。

もうひとつは、コードで入力させて名称は検索関数で表示する方法です。入力するのは短いコードだけになり、名称は自動で表示されます。コード表を配布する運用が必要になりますが、大量の項目を扱う業務では現実的な選択肢です。

選択肢の並び順も使いやすさに影響します。使用頻度の高いものを上に置くか、五十音順に並べるか。並べ替えの関数で自動的に並べておくこともできます。


よくある質問

Q. 候補が表示されません

参照している範囲が空になっているか、別のシートの範囲を正しく指定できていません。範囲を確認してください。

Q. 候補を追加しても反映されません

参照範囲が固定されている可能性があります。範囲を広げるか、可変になる指定に変えてください。

Q. 範囲外の値も入力できてしまいます

入力規則の設定で、拒否ではなく警告になっています。設定を変えてください。

Q. 貼り付けたら規則が無視されました

貼り付けでは働かないことがあります。条件付き書式で不正な値を目立たせる方法を併用してください。

Q. 連動プルダウンで候補が出ません

名前の付け方に問題がある可能性があります。空白や記号が含まれていないか確認してください。

Q. 大分類を変えたら組み合わせが不整合になります

小分類の値は自動では消えません。条件付き書式で不整合を目立たせる運用にしてください。

Q. 選択肢を実データから自動生成できますか

重複を除く関数の結果を参照範囲にすれば可能です。データが増えれば候補も増えます。

Q. 複数選択できますか

標準では一つだけです。複数を扱いたい場合は、チェックボックスを列で並べる方法があります。→ チェックボックスの使い方

まとめ

  • プルダウンは見た目ではなく、表記ゆれを防ぐための機能
  • 別シートのリストを参照する作り方にすると、追加が楽
  • 空欄が並ぶなら FILTER で作業列を作る
  • 「入力を拒否」に設定しないと弾けない
  • 連動プルダウンは INDIRECT +名前付き範囲。名前と値を完全一致させる
  • 入力が統一されると、COUNTIFQUERY が確実に動く

関連ページ