Excel のドロップダウンリストで複数アイテムを選択する – 完全ガイド
Excel のドロップダウンリストは、データの一貫性を保ちながら入力を簡単にしてくれる優れたツールです。ただし、デフォルトでは1 つの項目しか選択できません。同じドロップダウンリストから複数の項目を選択する必要がある場合は、どうすればよいでしょうか?この包括的なガイドでは、Excel のドロップダウンリストで複数選択を有効にする方法や、重複の管理、カスタム区切り文字の設定、そしてこれらのリストの適用範囲を定義する方法を詳しく解説します。

ドロップダウンリストで複数選択を有効にする
本セクションでは、Excel のドロップダウンリストで複数選択を有効にする2 つの方法をご紹介します。
VBA コードを使用する
ドロップダウンリストで複数選択を有効にするには、Excel の「Visual Basic for Applications(VBA)」をご利用いただけます。このスクリプトを使えば、ドロップダウンリストの動作をカスタマイズし、複数選択が可能なリストに変更できます。以下の手順に従って設定してください。
ステップ1:シート(コード)エディタを開く
- 複数選択を有効にしたいドロップダウンリストが含まれるワークシートを開きます。
- シートタブを右クリックし、表示されるコンテキストメニューから「コードの表示」を選択してください。

ステップ2:VBA コードを使用する
次の VBA コードをコピーし、開いているシート(コード)ウィンドウに貼り付けてください。
VBA コード:Excel のドロップダウンリストで複数選択を有効にする
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub

結果
ワークシートに戻ると、ドロップダウンリストから複数のオプションを選択できるようになります。以下のデモをご覧ください:

上記の VBA コード:
- 既存および今後作成される、現在のワークシート内のすべてのデータ検証ドロップダウンリストに適用されます。
- 各ドロップダウンリスト内で同じ項目を複数回選択できないように設定します。
- 選択したアイテム数にはカンマが区切り文字として使用されます。他の区切り文字をご利用になる場合は、このセクションを参照して区切り文字を変更してください。。
Kutools for Excel を使用して数回のクリックで実行
VBA に不慣れな方には、「Kutools for Excel」の「複数選択可能なドロップダウンリストを作成する」機能がさらに簡単です。このユーザーフレンドリーなツールを使えば、ドロップダウンリストで複数選択を手軽に有効化でき、区切り文字をカスタマイズしたり重複を簡単に管理したりと、さまざまなニーズに柔軟に対応できます。
Kutools for Excel をインストール後、「Kutools」タブに移動し、「ドロップダウンリスト」>「複数選択可能なドロップダウンリストを作成する」を選択してください。その後、以下のとおり設定を行います。
- 複数のアイテムを選択できるドロップダウンリストを含む範囲を指定します。
- ドロップダウンリストのセル内で選択されたアイテムの区切り文字を指定します。
- 「OK」をクリックして、設定を完了しましょう。
結果
これで、制限された範囲内のドロップダウンリストが設定されたセルをクリックすると、その横にリストボックスが表示されます。「+」ボタンをクリックしてアイテムをドロップダウンセルに追加したり、「-」ボタンをクリックして不要なアイテムを削除したりできます。下記のデモをご覧ください:

- セル内で選択したアイテム数を縦方向に表示したい場合は、「改行後に区切り記号を挿入」オプションをオンにしてください。横方向のリスト表示をご希望の場合は、このオプションをオフのままにしてお使いください。
- ドロップダウンリストに検索バーを追加したい場合は、「検索機能を有効にする」オプションをオンにしてください。
- この機能をご利用になるには、まずKutools for Excel をダウンロードしてインストールしてください。
複数選択のドロップダウンリストに関するその他の操作
本セクションでは、データ検証のドロップダウンリストで複数選択を有効にする際に必要なさまざまなシナリオをまとめています。
ドロップダウンリストで重複アイテムを許可する
ドロップダウンリストで複数選択を許可する場合、重複が問題となることがあります。前述の VBA コードでは、ドロップダウンリストへの重複アイテムの追加を許可していません。重複アイテムを保持する必要がある場合は、本セクションの VBA コードをお試しください。
VBA コード:データ検証のドロップダウンリストで重複を許可する
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
Target.Value = xValue1 & delimiter & xValue2
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
結果
これで、現在のワークシート内のドロップダウンリストから複数のアイテムを選択できるようになります。同じアイテムをリスト内に繰り返したい場合は、再度そのアイテムをリストから選択してください。スクリーンショットをご覧ください:

ドロップダウンリストから既存のアイテムを削除する
ドロップダウンリストから複数のアイテムを選択した後、リスト内の既存アイテムをセルから削除する必要が生じることがあります。本セクションでは、この操作を実行するための別の VBA コードをご紹介します。
VBA コード:ドロップダウンリストセルから既存のアイテムを削除する
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRngDV As Range
Dim TargetRange As Range
Dim oldValue As String
Dim newValue As String
Dim delimiter As String
Dim allValues As Variant
Dim valueExists As Boolean
Dim i As Long
Dim cleanedValue As String
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Set your desired delimiter here
If Target.CountLarge > 1 Then Exit Sub
' Check if the change is within the specific range
If Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
If xRngDV Is Nothing Or Target.Value = "" Then
' Skip if there's no data validation or if the cell is cleared
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0
If Not Intersect(Target, xRngDV) Is Nothing Then
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
Target.Value = newValue
' Split the old value by delimiter and check if new value already exists
allValues = Split(oldValue, delimiter)
valueExists = False
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) = newValue Then
valueExists = True
Exit For
End If
Next i
' Add or remove value based on its existence
If valueExists Then
' Remove the value
cleanedValue = ""
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) <> newValue Then
If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
cleanedValue = cleanedValue & Trim(allValues(i))
End If
Next i
Target.Value = cleanedValue
Else
' Add the value
If oldValue <> "" Then
Target.Value = oldValue & delimiter & newValue
Else
Target.Value = newValue
End If
End If
Application.EnableEvents = True
End If
End Sub
結果
この VBA コードを使えば、ドロップダウンリストから複数のアイテムを簡単に選択でき、すでに選択したアイテムも手軽に削除できます。複数選択後に特定のアイテムを削除したい場合は、再度そのアイテムをリストから選択するだけで OK です。

カスタム区切り文字の設定
上記の VBA コードでは、区切り文字がカンマに設定されています。この変数を任意の文字に変更すれば、ドロップダウンリストで選択した項目の区切り文字として利用できます。その方法を以下に示します:
上記の VBA コードにはすべて次の行が含まれていることがわかります:
delimiter = ", "
カンマを必要な区切り文字に変更するだけで済みます。たとえば、アイテムをセミコロンで区切るようにしたい場合は、次の行を変更してください:
delimiter = "; "
delimiter = vbNewLine
制限された範囲を設定する
上記の VBA コードは、現在のワークシート内のすべてのドロップダウンリストに適用されます。特定のドロップダウンリストの範囲にのみ適用したい場合は、上記の VBA コード内で次のように範囲を指定できます。
上記の VBA コードにはすべて次の行が含まれていることがわかります:
Set TargetRange = Me.UsedRange
次の行に変更するだけで済みます:
Set TargetRange = Me.Range("C2:C10")
保護されたワークシートで実行
ワークシートをパスワード「123」で保護する際、ドロップダウンリストが含まれるセルを事前に「ロック解除済み」に設定しておけば、保護後も複数選択機能が有効になるようにできます。しかし、前述の VBA コードはこのような状況では動作しません。本セクションでは、保護されたワークシートでも複数選択機能を実現するために特別に設計された別の VBA スクリプトをご紹介します。
VBA コード:重複なしでドロップダウンリストの複数選択を有効にする
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Dim isProtected As Boolean
Dim pswd As Variant
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
' Check if sheet is protected
isProtected = Me.ProtectContents
If isProtected Then
' If protected, temporarily unprotect. Adjust or remove the password as needed.
pswd = "yourPassword" ' Change or remove this as needed
Me.Unprotect Password:=pswd
End If
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then
If isProtected Then Me.Protect Password:=pswd
Exit Sub
End If
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
' Re-protect the sheet if it was protected
If isProtected Then
Me.Protect Password:=pswd
End If
End Sub
Excel のドロップダウンリストで複数選択を有効にすれば、ワークシートの機能性と柔軟性が大幅に向上します。VBA コーディングに慣れている方も、
関連記事
Excel のドロップダウンリストで入力時に自動補完
大量の選択肢を含むデータ検証ドロップダウンリストでは、目的の項目を探すためにリストをスクロールするか、またはリストボックスに単語全体を直接入力する必要があります。しかし、ドロップダウンリストで最初の文字を入力しただけで自動的に候補が絞り込まれれば、操作は格段に簡単になります。このチュートリアルでは、その課題を解決する方法をご紹介します。
Excel で別のワークブックからドロップダウンリストを作成
同一ワークブック内のワークシート間でデータ検証のドロップダウンリストを作成するのはとても簡単です。でも、そのリストの元データが別々のワークブックに保存されている場合はどうすればいいのでしょうか?このチュートリアルでは、Excel で別のワークブックからドロップダウンリストを簡単に作成する方法を詳しく解説します!
Excel で検索可能なドロップダウンリストを作成
多数の選択肢を含むドロップダウンリストでは、目的の項目を見つけるのは簡単ではありません。以前、ドロップダウンボックスで最初の文字を入力すると自動的に候補が絞り込まれる方法をご紹介しました。この自動補完機能に加え、ドロップダウンリストを「検索可能」にすることで、さらにスピーディーに正確な値を見つけられ、作業効率が大幅にアップします。ぜひ、このチュートリアルの方法をお試しください!
Excel のドロップダウンリストで値を選択すると、他のセルが自動入力されるようにする方法
たとえば、セル範囲 B8:B14 に基づいてドロップダウンリストを作成したとします。このリストから任意の値を選択したとき、対応するセル範囲 C8:C14 の値が自動的に入力されるようにしたい—そんなときに、本チュートリアルで紹介する方法がぴったりです!
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスト:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式を作成 | データ分析とチャート作成| 拡張機能を呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失わずに列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間での VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列を移動|非表示列の表示状態を切り替え|範囲と列を比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブック&シートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線…) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、…)| 50+チャートタイプ(ガントチャート、…)| 40+実用的な数式(誕生日に基づいて年齢を計算します、…)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、…)| 12 変換ツール(単語に変換する、為替レートの変換、…)| 7 結合と分割ツール(高度な行のマージ、セルの分割、…)|…他にも多数 |
Kutools for Excel でExcel スキルを強化し、これまでにないほどの効率を体験しましょう。Kutools for Excel は、300 以上の高度な機能で生産性を大幅アップ。時間を大幅に節約できます。今すぐ最も必要な機能を手に入れるにはこちらをクリック。。。
Office Tab は Office にタブインターフェースを導入し、作業を大幅に簡単にします。
- Word、Excel、PowerPoint、Publisher、Access、Visio、Project でタブを使った編集と閲覧を有効にします。
- 同じウィンドウ内の新しいタブで、複数のドキュメントを簡単に開いたり作成したりできます。
- 日々の生産性を50% 向上させ、毎日数百回のマウスクリックを削減します!
Kutools アドインすべて。インストーラーは1 つだけ
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインに加え、Office Tab Pro も含まれており、複数の Office アプリケーションを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携でさらにパワーアップ— Office アプリケーション全体で生産性を合理化
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- ベストバリュー— 個別アドイン購入よりお得

