Excelで複数選択できるデータの入力規則ドロップダウンリストを作成する3つの方法
この記事では、Excelで複数選択が可能なデータの入力規則(データバリデーション)ドロップダウンリストを作成する方法を解説します。通常、データの入力規則を使うと、リストから選択できる項目は1つだけという制限があります。しかし、VBAマクロを活用すれば、この制限を回避して複数の項目を選択できるようになります。本チュートリアルでは、実際のマクロコードとともに3つのパターンを具体的に紹介します。
練習用ワークブックはこちらからダウンロードできます。
Excelで複数選択可能なドロップダウンリストを作成する3つの例
VBAマクロを使って複数選択対応のドロップダウンリストを作成する作業は、やや複雑なプロセスです。そこで、理解しやすいように3つの異なる例に分けて順番に説明していきます。
例1:単一セル内に複数選択できるドロップダウンリストを作成する
まず最初の例では、4か国の国名からなるデータセットを使用します。この国名をもとに、複数選択可能なデータの入力規則ドロップダウンリストを作成します。通常の設定では、1つのセルに入力できる国名は1つだけですが、ここでは同じセルに複数の国名をカンマ区切りで入力できるようにします。

それでは、具体的な手順を見ていきましょう。
手順:
- まず、セル範囲(D4:D8)を選択し、名前範囲「dv_list_0」を設定します。

- 次に、セル範囲(B5:B8)を選択し、名前範囲「Country_Range」を設定します。

- 続いて、「データ」タブ >「データツール」>「データの入力規則」>「データの入力規則」の順にクリックします。

- 「データの入力規則」ダイアログボックスが開きます。「入力値の種類」で「リスト」を選択し、「元の値」欄に以下の数式を入力します。
=dv_list_0
- 「OK」をクリックします。

- これで、選択したセルの右側にドロップダウンボタンが表示されます。

- 次に、アクティブなシートのシート名を右クリックし、「コードの表示」を選択します。

- 空白のVBAモジュールが開くので、以下のコードを貼り付けます。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Value_Old As String
Dim Value_New As String
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Not Intersect(Target, ActiveSheet.Range("Country_Range")) Is Nothing Then
Application.EnableEvents = False
Value_New = Target.Value
On Error Resume Next
Application.Undo
On Error GoTo 0
Value_Old = Target.Value
If InStr(Value_Old, Value_New) Then
If InStr(Value_Old, ",") Then
If InStr(Value_Old, ", " & Value_New) Then
Target.Value = Replace(Value_Old, ", " & Value_New, "")
Else
Target.Value = Replace(Value_Old, Value_New & ", ", "")
End If
Else
Target.Value = ""
End If
Else
If Value_Old = "" Then
Target.Value = Value_New
Else
If Value_New = "" Then
Target.Value = ""
Else
If InStr(Target.Value, Value_New) = 0 Then
Target.Value = Value_Old & ", " & Value_New
End If
End If
End If
End If
Application.EnableEvents = True
Else
Exit Sub
End If
End Sub
- 実行ボタンをクリックするか、F5キーを押してコードを実行します。

- マクロに名前を付けて「実行」をクリックします。この例でのマクロ名は「VBA」です。

- その後、セルB5のドロップダウンメニューから「USA」を選択すると、セルB5に「USA」という国名が入力されます。

- 最後に、同様に「Canada」と「Mexico」もドロップダウンから選択してみましょう。すべての選択値が1つのセルにまとまって表示されていることが確認できます。

関連記事:Excelでデータの入力規則用ドロップダウンリストを作成する方法(8通り)
例2:隣接する列に複数選択結果を自動入力するドロップダウンリストを作成する
2つ目の例では、選択した項目が隣接する列に自動的に転記されるドロップダウンリストを作成します。前の例と同じデータセットを引き続き使用します。

それでは、手順を確認していきましょう。
手順:
- まず、セルD5を選択します。前の方法と同様にデータの入力規則ドロップダウンを作成し、元の値として範囲(B5:B8)を指定します。

- 次に、アクティブなシート名を右クリックし、「コードの表示」を選択します。

- 新しい空白のVBAモジュールが開くので、以下のコードを記述します。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo exitHandler
Dim DV_Range As Range
Dim Col_i As Integer
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set DV_Range = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If DV_Range Is Nothing Then GoTo exitHandler
If Intersect(Target, DV_Range) Is Nothing Then
Else
Application.EnableEvents = False
If Target.Column = 4 Then
If Target.Value = "" Then GoTo exitHandler
If Target.Validation.Value = True Then
Col_i = Cells(Target.Row, Columns.Count).End(xlToLeft).Column + 1
Cells(Target.Row, Col_i).Value = Target.Value
Else
MsgBox "Invalid entry"
Target.Activate
End If
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub
- F5キーを押すか、実行アイコンをクリックしてコードを実行します。

- 「マクロ」ダイアログボックスが表示されるので、マクロ名を「VBA1」として「実行」をクリックします。

- その後、セルD5のドロップダウンから「USA」を選択します。

- すると、隣接するE列のセルE5に「USA」という国名が自動的に入力されます。

- 最後に、「Canada」と「Mexico」も続けて選択します。選択した値がそれぞれ隣接する列に順番に配置されていくのがわかります。

関連記事:Excel VBAによるデータの入力規則リストの既定値設定(マクロとユーザーフォーム)
あわせて読みたい記事:
- Excelでデータの入力規則ドロップダウンリストのオートコンプリートを行う方法(2通り)
- Excelでテーブルからデータの入力規則リストを作成する方法(3通り)
- Excelで1つのセルに複数のデータの入力規則を適用する方法(3例)
- Excelのデータの入力規則リストから空白を削除する方法(5通り)
- Excelで英数字のみ入力を許可するデータの入力規則(カスタム数式を使用)
例3:別々の行に複数選択結果を記録するドロップダウンリストを作成する
3つ目の例は、2つ目の例とよく似ています。例2では隣接する列に複数選択の結果が展開されましたが、この例では別々の行に選択値が記録されていきます。ここでも、これまでの例と同じデータセットを使用します。

それでは、手順を見ていきましょう。
手順:
- はじめに、セルD5を選択します。前の手順と同様にデータの入力規則ドロップダウンを作成し、元の値として範囲(B5:B8)を指定します。

- 次に、アクティブなシート上で右クリックし、表示されたオプションから「コードの表示」を選択します。

- 空白のVBAモジュールが開くので、以下のコードを入力します。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo exitHandler
Dim DV_Range As Range
Dim Row_1 As Long
Dim Col_1 As Long
Col_1 = Target.Column
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set DV_Range = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If DV_Range Is Nothing Then GoTo exitHandler
If Intersect(Target, DV_Range) Is Nothing Then
Else
If Target.Value = "" Then GoTo exitHandler
Application.EnableEvents = False
Select Case Target.Column
Case 4
If Target.Offset(0, 1).Value = "" Then
Row_1 = Target.Row
Else
Row_1 = Cells(Rows.Count, Col_1 + 1).End(xlUp).Row + 1
End If
Cells(Row_1, Col_1 + 1).Value = Target.Value
Target.ClearContents
End Select
End If
exitHandler:
Application.EnableEvents = True
End Sub
- 実行アイコンをクリックするか、F5キーを押してコードを実行します。

- 「マクロ」ダイアログボックスが表示されます。マクロ名を「VBA2」と入力して「実行」をクリックします。

- その後、セルD5のドロップダウンリストから「USA」を選択します。

- すると、「USA」という名前が同じ行の隣接する列に配置されます。

- 最後に、「Canada」「Mexico」「England」を順番に選択していきます。選択した値が同じ列の中で別々の行に1つずつ記録されていくことが確認できます。

関連記事:フィルター付きのExcelデータの入力規則ドロップダウンリスト(2例)
まとめ
このチュートリアルでは、VBAマクロを活用して複数選択が可能なデータの入力規則ドロップダウンリストを作成する方法を、3つのパターンに分けて解説しました。単一セルへの集約、隣接列への展開、別行への記録と、用途に応じて使い分けることで業務効率が大きく向上します。ぜひ記事添付の練習用ワークブックをダウンロードして、実際に手を動かしながらスキルを試してみてください。ご不明な点があれば、下のコメント欄でお気軽にお尋ねください。チーム一同、できるだけ早く回答いたします。今後もMicrosoft Excelに関する革新的なソリューション情報をお届けしていきますので、お楽しみに。
関連記事
- Excelのデータの入力規則数式でIF関数を使う方法(6通り)
- Excelで色を使ったデータの入力規則を活用する方法(4通り)
- 別シートのデータから入力規則リストを作成する方法(6通り)
- VBAで名前付き範囲を使ったデータの入力規則リストの作成
- 【解決済み】Excelでコピー&ペースト時にデータの入力規則が機能しない問題の対処法
-
Excelでドロップダウンリスト付きのデータ入力フォームを作成する2つの方法
Microsoft Excelでは、データ入力フォームや計算フォームなど、さまざまな種類のフォームを作成できます。こうしたフォームを活用すれば、データ入力が格段に楽になり、作業時間の大幅な節約にもつながります。また、Excelには「ドロップダウンリスト」という便利な機能もあります。限られた値を何度も手入力するのは面倒ですが、ドロップダウンリストを使えば、リストから選ぶだけで簡単に値を入力できます。この記事では、Excelでドロップダウンリスト付きのデータ入力フォームを作成する方法を、具体的な操作画面とともにわかりやすく解説します。 Excelでドロップダウンリスト付きデータ入力フォームを
-
Excelのデータの入力規則がグレーアウトして使えないときの原因と解決策4選
Excelでデータの入力規則(Data Validation)を使おうとしたら、メニューがグレーアウトしていてクリックできない――そんな経験はありませんか?実はこのトラブルにはいくつかの典型的な原因があり、それぞれに簡単な解決策があります。この記事では、入力規則がグレーアウトする4つの原因とその対処法を、わかりやすい手順で解説します。さらに、「ドロップダウンリストが表示されない」というよくある問題の直し方もご紹介しますので、ぜひ最後までお読みください。 データの入力規則がグレーアウトする4つの原因と解決策 ここでは、Windows環境を前提に、入力規則がグレーアウトして使用できなくなる原因と