エクセルでプルダウンリストを使っているとき、こういう場面ありませんか?

二つ目のプルダウンリストで、一つ目に選択した項目と関係ないものがいっぱいでてくる!
見にくい!分かりにくい!
とか

複数回答してもらいたいんだけど、フリーにすると集計が面倒だしな~。。。
かといって、何個もプルダウンリストを作るのも大変だし。。。
など。
そのお悩み、プルダウンリストを工夫することで解決できます!
この記事では、
・Excelで連動型プルダウンを作成する手順
・複数項目を選べる応用VBAの使い方
を紹介します。
仕事の効率化にもつながること間違いなし!なテクニックを紹介します。
ぜひ最後まで読んでいただけると嬉しいです!
- プルダウンリストの基本的な作り方
- 連動型プルダウンリストの作り方
- VBAを活用して、プルダウンリストから複数項目を選択する方法
プルダウンリストとは?基本の使い方
まず、プルダウンリストについて説明していきます。
これはExcelの便利な機能で、
セルを選択するとあらかじめ用意された選択肢が表示され、その中から選べる機能
です。
例えば、
・「はい/いいえ」
・「営業部/総務部/経理部」
などあらかじめ使う選択肢をリストにしておくことで、入力の手間を減らしたり、入力ミスを防ぐことができます。
基本的な作成手順
こちらでは、プルダウンリストの基本的な作成方法を紹介します。
プルダウンリスト自体は簡単に作れるので、様々な場面でかつようできます。
今回は、A2~A5にある項目を、セルH2にプルダウンリストで表示させます。

■プルダウンリストの作成手順
1.プルダウンリストを表示したいセルを選択し、「データ」→「データの入力規則」を選択

2.「入力値の種類」で「リスト」を選択、「元の値」でリスト化したい項目を入力し、「OK」を選択
※今回はA2~A5の項目を表示させるため、その範囲(=$A$2:$A$5)を入力

これで、「カテゴリ」のプルダウンリストが完成しました。

このようにプルダウンリストが作れると、定型文言を選択するだけなので非常に便利です。
【連動型】選択肢を絞れるプルダウンリストの作成方法
連動型プルダウンリストとは、
最初に選んだ項目に応じて、次の選択肢が自動的に変わるリストのこと
です。
例えば、「好きな食べ物は?」と聞かれて「果物」と答えたのに、「好きな果物は?」の回答欄に「ニンジン」がでてきたらおかしいですよね。
普通のプルダウンリストではこのようなことが起きてしまいますが、項目を連動させることにより、1つ目に選択した項目と関連ある項目のみ表示されることができるようになります。
今回は、最初に「果物」や「野菜」などのカテゴリを選ぶと、次に表示されるアイテムリスト(りんご、バナナ、トマト、キャベツなど)がそのカテゴリに合わせて絞られる連動型プルダウンリストを作ってみたいと思います。
セルH2で「カテゴリ」を選択した場合、それぞれの項目を表示するプルダウンリストは以下のように設定します。
・「果物」を選択 :「リンゴ」、「バナナ」、「ブドウ」、「モモ」
・「野菜」を選択 :「ニンジン」、「タマネギ」、「キャベツ」、「キュウリ」、「トマト」
・「飲み物」を選択 :「ミルク」、「烏龍茶」、「コーヒー」、「紅茶」
・「アルコール」を選択:「ビール」、「ワイン」、「焼酎」
連動型プルダウンリストを作成するには、「名前の定義」が必要になります。
やり方をステップごとに図で説明していきます。
1.「数式」タブより、「名前の管理」を選択

2.「名前の管理」画面が表示されるので、「新規作成」を選択

3.「新しい名前」画面の「名前」に「果物」と入力し、「参照範囲」にリスト化したい範囲を選択して「OK」を選択
(※果物を設定する場合)

これで「果物」に対応する項目を設定することができました。
4.同じ手順で、「野菜」、「飲み物」、「アルコール」も作成していきます。

これで、「名前の管理」作業は完了しました。
次に、これがちゃんとプルダウンリストに連動するよう設定していきます。
5.プルダウンリストを作成したいセルを選択し、「データの入力規則」を選択

6.「入力値の種類」で「リスト」を選択、「元の値」で「=INDIRECT($H$2)」を入力して、「OK」を選択

これで、一つ目の項目に連動したプルダウンリストを作成することができました。
実際にプルダウンリストを選択してみると、ちゃんと項目が連動していることが確認できます。
「名前の定義」はグラフにも活用できるので、とても便利な機能です。
こちらの記事で紹介していますので、興味のある方はチェックしてみてください。
※記載場所→OFFSET関数で「直近7日間」をグラフ化する方法
<補足>INDIRECT関数って何?連動に使える関数を解説
連動型プラダウンリストを作成するにあたり、「INDIRECT関数」を使用しました。
ただ「この関数って何?」と思われた方もいると思いますので、解説します。
INDIRECT関数とは、
セルのアドレスを文字として使って、その場所にあるデータを取り出す関数
です。
INDIRECT関数の書式は以下の通りです。
=INDIRECT(参照文字列,[参照形式])
それぞれの説明は以下の通りです。
引数 | 説明 |
---|---|
参照文字列 | 名前の定義がされているセルへの参照や、 文字列としてのセルへの参照を指定 |
参照形式(省略可能) | A1形式か、R1C1形式かを指定 (省略した場合はA1形式) |
参照形式に関しては特に気にしなくて大丈夫です。
もし興味のある方は、以下記事にてA1形式/R1C1形式について解説しておりますので、チェックしてみてください。
少しわかりにくいと思いますので、以下でイメージを紹介します。
例えばINDIRECT関数で「B1」とした場合、そのセルに「B2」と記載があれば、セルB2に表示されている内容を表示します。
例えば以下図の場合、セルB1には「B2」と入力してあります。これをINDIRECT関数で以下のように指定してあげると、セルB2の値を反映することができます。
ざっくりいうと、「=B2」と同じような状況になるということです。
=INDIRECT(B1)

ただ、今回名前の定義を複数使ったので、直接「=果物」としたら項目が連動しなくなりますよね。
そのため、INDIRECT関数を使用することにより、1つ目の項目が何を選択されても2つ目が連動するように設定したのです。
またこの関数の便利なところは、別シートのセル入力値も取得できることです。
別シートのセル入力したい場合、
=INDIRECT("シート名!B1")
と、対象シートとセル番地を文字列で指定してあげると取得することができます。
- 別シートを指定するときは、シート名のあとに「!」をつけるのを忘れずに。
以下のように、セルにあらかじめシート名とセル番地を入力している場合、それを参照することも可能です。

【応用編】複数選択できるプルダウンリストをVBAで実現
エクセルのプルダウンリストは、標準では一つの項目しか選択できません。
例えばアンケートなどをとるとき、
・複数回答してもらいたいけど、フリーワードにすると集計が手間だから固定ワードにしたい
・何個もプルダウンリストを作ると、入力に手間がかかる
など、悩むケースも出てくると思います。
しかしVBAを使うことで、複数項目を選択することが可能になります。
アンケートの集計などで、複数選択できると便利なシーンに活用できる方法です。
こちらの設定方法も図を交えながら説明していきます。
プルダウンのリストを作る
まずはプルダウンに表示するリストを作ります。
今回は「プルダウンリスト」シートのセルA1~A6で、果物一覧を記載しました。
こちらのリストを作成し、複数選択できるように設定していきます。

プルダウンリストが表示されるよう設定する
次に、プルダウンリストを表示するよう設定します。
先ほど紹介した基本的なプルダウンリスト作成手順と流れは同じです。

プルダウンを複数選択できるVBAを設定する
通常のプルダウンでは複数選択はできないため、VBAを設定します。
1.「開発」タブより、「Visual Basic」を選択

- 「Alt」+「F11」キーでも、Visual Basic画面を開くことができます。
2.プルダウンリストを表示させるシートを選択(今回は「プルダウン_複数」シートを選択)

3.表示するシートを選択し、コードウィンドウに以下VBAコードをコピーペーストし、保存
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDropdown As Range
Dim oldVal As String
Dim newVal As String
' ドロップダウンがある範囲を指定(今回はB2:B3)※必要に応じて修正してください!
Set rngDropdown = Range("B2:B3")
' 対象セルに変更があった場合
If Not Intersect(Target, rngDropdown) Is Nothing Then
'新たなイベント発生を停止する
Application.EnableEvents = False
newVal = Target.Value
Application.Undo ' 直前の値に戻す
oldVal = Target.Value
' 既存の値が空ならそのまま反映
If oldVal = "" Then
Target.Value = newVal
Else
' 既に同じ値が含まれていたら削除
If InStr(1, oldVal, newVal) > 0 Then
Target.Value = Replace(oldVal, newVal & ", ", "")
Target.Value = Replace(Target.Value, ", ,", ",") ' 余分なカンマ修正
Target.Value = Trim(Replace(Target.Value, ", ", ",")) ' スペース整理
Else
'同じ値でなければ追加
Target.Value = oldVal & ", " & newVal
End If
End If
'新たなイベントが発生するように設定する
Application.EnableEvents = True
End If
End Sub
そして、先ほどのプルダウンを選択してみると、複数項目を選択することができるようになりました。
まとめ:連動&複数選択でExcel作業をもっと快適に!
Excelのプルダウンリストは、入力ミスを防ぎ、作業の効率化に非常に役立ちます
今回紹介した「連動型プルダウン」や「複数選択が可能なVBA」は、実務でのデータ入力や帳票作成などにぴったりのテクニックです。
ぜひこの記事を参考に、Excel作業の効率アップをしていきましょう!
この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。
また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。
最後まで読んでいただき、ありがとうございました!
コメント