
こんにちは、ichi3270です。
今回は、Googleスプレッドシートのプルダウン(入力規則)の使い方についてまとめます。基本的な使い方からはじめ、応用的な使い方として、連動するプルダウンも作ってみたいと思います。
基本的な使い方
まずは、最も基本的な使い方を説明します。大体の人はこれでOKだと思います。
まず、プルダウン化したいセルを選択し、データメニューのデータの入力規則をクリックします。

条件はリストを直接指定を選択し、その右の入力欄に、選択肢を , (半角カンマ)で区切って入力します。

無効なデータの場合は入力を拒否を選ぶことをお勧めします。これは、後で説明します。
あとは保存を押せば、プルダウンの作成完了です。
下の画像のように、プルダウンから選択できるようになりました。

基本的な使い方(リストを使用する)
基本的には、上記の方法で良いと思いますが、選択肢が頻繁に変わったり、選択肢の量が多い場合には、このやり方だと少し面倒ですね。
そういう場合は、選択肢のリストをあらかじめ作っておいて、それを使うのが良いと思います。
その手順を解説します。
まずは、選択肢のリストを作ります。今回は選択肢というシートを作成し、そこに選択肢を入力しましたが、シート名は何でもいいですし、プルダウンと同じシートでも構いません。

あとは、先ほどと同じ手順で、プルダウンを作成します。
ただし、条件:の部分はリストを範囲で指定を選びます。
( 田 をクリックすると、リストの範囲を選択するモードになります。)

それ以外は、先ほどと同じですね。
この方法で作成していれば、選択肢が増えた時は、選択肢シートに追加すればいいだけなので楽です。
各機能の説明
ここからは、細かく各機能の説明をしていきます。
セル範囲:

これは特に説明不要ですね。プルダウン化するセルの範囲を設定します。
先述の手順(先に範囲を選んでからデータの入力規則をクリック)であれば、自動的に設定されています。
条件:

プルダウンに関係があるのは、先述のリストを範囲で指定、リストを直接指定ですね。その他カスタム数式を使って、応用的なプルダウンを作ることもできます。(これは後で説明します)
ちなみに、セルにプルダウンリストを表示にチェックを付けると、そのセルの右側に▼が表示されます。(チェックを付けなかった場合は▼が表示されませんが、データを入力する際はプルダウンが表示されます)
また、プルダウンとはちょっと違いますが、日付を選ぶと、下図のようにカレンダーから選択できるようになります。

これもプルダウンとは違いますが、チェックボックスにすることもできます。

無効なデータの場合:

プルダウンの選択肢以外を手入力した際など、入力規則以外のデータを入力した場合の動作を選べます。
・警告を表示にした場合

警告は表示されるものの、入力はできてしまいます。好みによりますが、個人的には非推奨。
(想定外のデータが入っていると、後で泣くことになるかもしれません・・・)
・入力を拒否にした場合

「あああ」と入力してみると、このようなメッセージが表示され、入力できません。
デザイン:

検証ヘルプテキストを表示にチェックをつけると、セルにマウスポイントが触れた時に、ヘルプテキストを表示することができます。

応用編:連動するプルダウンを作る
ここからは応用編です。複数のプルダウンがある場合に、それぞれの選択肢が連動するような作りにしてみます。

上の画像では、大分類で犬を選ぶと、中分類の選択肢が犬の種類に、大分類でその他を選ぶと、中分類の選択肢がその他の動物になっています。
このように、複数のプルダウンを連動させる方法について説明します。
今回は3つのシートを使用します。
マスタデータのシート(「動物」シート)

こんな感じに、動物というシートを作り、A列:大分類、B列:中分類、C列:小分類となるようなデータを入力します。
罫線は、見やすくするためにつけただけなので、線なしでも構いません。
選択肢用のシート(「リスト」シート):大分類を表示する

リストという名前のシートを作ります。このシートが、各プルダウンの選択肢のリストになります。
まずは、A列に大分類の選択肢を表示させます。
A1セルに下記の数式を入力してください。
=unique('動物'!A:A)
この数式は、動物シートのA列(大分類)の値を、重複を除いて取得する式になります。
動物シートそのままだと、犬犬犬犬犬犬犬・・・となってしまいますが、unique関数によって、重複が取り除かれていますね。
B列・C列には、中分類・小分類を表示したいのですが、それは後ほど・・・
メインのシート(シート名「シート」)

こちらはメインのシートですね。プルダウンを3つ用意しています。
プルダウンの選択肢は、リストを範囲で指定を選び、
- 大分類:リストシートのA列
- 中分類:リストシートのB列
- 小分類:リストシートのC列
・・・となるよう設定しておきます。
この時点で、大分類は選択できる状態になっているはずですので、何かを選択しておきます。
選択肢用のシート(「リスト」シート):中分類を表示する

さて、今度はリストシートのB列に、中分類の選択肢を表示させます。
B1セルに下記の数式を入力してください。
=iferror(unique(query('動物'!$A:$C,"select B where A='"&'シート'!B2&"'")))
ちょっと複雑ですかね・・・
外側の、iferrorは該当データが無い時に#N/Aと表示されるのを防ぐためなので、一旦おいておきましょう。
あと、uniqueも、先ほど説明したとおり、重複を削除するだけなので、おいておきましょう。
そうすると、注目するのは下記のquery関数ですね。

この関数の第2引数は、シンプルに考えると下記のとおりです。
"select B where A='大分類の値'"
ただ、大分類の値の部分は、シートのB2セルの値を参照しないといけません。
そのため、上記の式のその他を‘シート!B2’に置き換えると小難しくなってしまうのです。
うまく行っていると、メインのシートで、中分類が選べるようになっています。

選択肢用のシート(「リスト」シート):小分類を表示する

これで最後です!
=iferror(unique(query('動物'!$A:$C,"select C where A='"&'シート'!B2&"' and B='"&'シート'!B4&"'")))
更に長くなった・・・と思うかもしれませんが、B列の値が中分類と一致するという条件が増えただけです。
これで、大分類・中分類・小分類までが連動するリストが作れました。
この方法は、数式が少し複雑ですが、数の制限なくプルダウンを連動させられますし、マスタデータ(動物シート)もシンプルです。
他サイト様では、vlookupを使う、もう少し簡単な解説もありましたので紹介しておきます。

コメント