メインコンテンツへスキップ

Excelのドロップダウンリストで複数の項目を選択する – 完全ガイド

Author: Siluvia Last Modified: 2025-08-06

Excelのドロップダウンリストは、データの一貫性を確保し、入力を容易にするための素晴らしいツールです。しかし、デフォルトでは1つの項目しか選択できません。では、同じドロップダウンリストから複数の項目を選択する必要がある場合はどうすればよいでしょうか?この包括的なガイドでは、Excelのドロップダウンリストで複数選択を有効にする方法、重複を管理する方法、カスタム区切り文字を設定する方法、およびこれらのリストの範囲を定義する方法について説明します。

A screenshot of the animated demo showing multiple selections in an Excel drop-down list.

ヒント: 次の方法を適用する前に、ワークシートにドロップダウンリストが作成されていることを確認してください。データ検証ドロップダウンリストの作成方法を知りたい場合は、次の記事の指示に従ってください: Excelでデータ検証ドロップダウンリストを作成する方法.

ドロップダウンリストでの複数選択の有効化

このセクションでは、Excelのドロップダウンリストで複数選択を有効にするための2つの方法を提供します。

VBAコードの使用

ドロップダウンリストで複数選択を許可するには、Excelで「Visual Basic for Applications」(VBA)を使用できます。このスクリプトは、ドロップダウンリストの動作を変更して、複数選択リストにします。以下の手順に従ってください。

ステップ 1: シート(コード)エディタを開く
  1. 複数選択を有効にしたいドロップダウンリストが含まれているワークシートを開きます。
  2. シートタブを右クリックし、コンテキストメニューから「コードの表示」を選択します。
    A screenshot of the View Code option in the context menu of a sheet tab in Excel
ステップ 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

A screenshot of the VBA code pasted into the Excel VBA editor

結果

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

A screenshot of the animated demo showing multiple selections in an Excel drop-down list

注意:
上記のVBAコード:
  • 現在のワークシート内のすべてのデータ検証ドロップダウンリスト(既存のものと将来作成されるもの)に適用されます。
  • 各ドロップダウンリストで同じ項目を複数回選択することを防ぎます。
  • 選択した項目の区切り文字としてカンマを使用します。他の区切り文字を使用するには、このセクションを参照して区切り文字を変更してください

Kutools for Excel を数クリックで使用

VBAに慣れていない場合、より簡単な代替手段は「Kutools for Excel」の「複数選択可能なドロップダウンリスト」機能です。この使いやすいツールは、ドロップダウンリストで複数選択を有効にするプロセスを簡素化し、区切り文字をカスタマイズし、重複を簡単に管理できるようにして、さまざまなニーズに対応します。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

Kutools for Excel のインストール後、「Kutools」タブに移動し、「ドロップダウンリスト」>「複数選択可能なドロップダウンリスト」を選択します。その後、次のように設定する必要があります。

  1. 複数の項目を選択する必要があるドロップダウンリストを含む範囲を指定します。
  2. ドロップダウンリストセル内で選択した項目の区切り文字を指定します。
  3. 「OK」をクリックして設定を完了します。
結果

これで、指定した範囲内のドロップダウンリストを持つセルをクリックすると、その横にリストボックスが表示されます。目的の項目の横にある「+」ボタンをクリックして、ドロップダウンセルに追加し、「-」ボタンをクリックして不要になった項目を削除します。下記のデモをご覧ください:

A screenshot showing a demo of managing multiple selections in an Excel drop-down list using Kutools

注意:
  • 区切り文字を挿入後に改行したい場合は、「改行後に区切り記号を挿入」オプションをチェックします。水平方向にリストを表示したい場合は、このオプションをチェックしないでください。
  • ドロップダウンリストに検索バーを追加したい場合は、「検索機能を有効にする」オプションをチェックします。
  • この機能を使用するには、まず 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
結果

これで、現在のワークシートのドロップダウンリストから複数の項目を選択できるようになります。ドロップダウンリストセル内で項目を繰り返すには、リストからその項目を再度選択し続けます。スクリーンショットをご覧ください:

A screenshot of the animated demo showing duplicate selections in an Excel drop-down list


ドロップダウンリストからの既存の項目の削除

ドロップダウンリストから複数の項目を選択した後、ドロップダウンリストセルから既存の項目を削除する必要が生じることがあります。このセクションでは、このタスクを達成するのに役立つ別の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コードにより、ドロップダウンリストから複数の項目を選択し、すでに選択した項目を簡単に削除できます。複数の項目を選択した後、特定の項目を削除したい場合は、リストからその項目を再度選択するだけです。

A screenshot of the animated demo showing how to remove existing items from a drop-down list in Excel


カスタム区切り文字の設定

上記のVBAコードでは、区切り文字がカンマに設定されています。この変数を任意の文字に変更して、ドロップダウンリスト選択の区切り文字として使用できます。以下のように行います:

上記のVBAコードには、次の行がすべて含まれていることがわかります:

delimiter = ", "

必要に応じて、カンマを任意の区切り文字に変更するだけです。たとえば、セミコロンで項目を区切りたい場合は、その行を次のように変更します:

delimiter = "; "
注意: これらのVBAコードで区切り文字を改行文字に変更するには、この行を次のように変更します:
delimiter = vbNewLine

指定範囲の設定

上記のVBAコードは、現在のワークシート内のすべてのドロップダウンリストに適用されます。VBAコードを特定の範囲のドロップダウンリストにのみ適用したい場合は、上記のVBAコードで次のように範囲を指定できます。

上記のVBAコードには、次の行がすべて含まれていることがわかります:

Set TargetRange = Me.UsedRange

その行を次のように変更するだけです:

Set TargetRange = Me.Range("C2:C10")
注意: ここで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
注意: コード内で、pswd = "yourPassword" の行の “yourPassword” をワークシートを保護するために使用している実際のパスワードに置き換えてください。たとえば、パスワードが「abc123」の場合、その行は pswd = "abc123" となります。

Excelのドロップダウンリストで複数選択を有効にすることで、ワークシートの機能性と柔軟性を大幅に向上させることができます。VBAコーディングに慣れていなくても、Kutoolsのようなシンプルなソリューションを好む場合でも、標準的なドロップダウンリストをダイナミックで複数選択可能なツールに変える能力が得られます。これらのスキルがあれば、よりダイナミックでユーザーフレンドリーなExcel文書を作成する準備が整いました。Excelの機能についてさらに深く学びたい方のために、当サイトには豊富なチュートリアルがあります。 こちらでさらに多くのExcelのヒントやコツを発見してください

最高のオフィス生産性ツール

🤖 Kutools AI Aide:データ分析を革新:インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析してグラフを生成  |  Kutools Functions を呼び出す
人気機能重複の検索・ハイライト・マーキング   |  空白行を削除   |  データを失わず列やセルを統合   |   丸める ...
スーパーLOOKUP複数条件VLOOKUP   複数値VLOOKUP  |  複数シートの検索  |  ファジーマッチ ....
高度なドロップダウンリストすばやくドロップダウンリストを作成   |  依存型ドロップダウンリスト   |  複数選択ドロップダウンリスト ....
列の管理:特定数の列を追加  | 列を移動  | 非表示列の表示状態を切り替え |  範囲と列の比較 ...
注目機能グリッドフォーカス   |  デザインビュー  |  強化された数式バー   ワークブック&ワークシートの管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リスト送信で電子メールを送信   |  スーパーフィルター   |   特殊フィルタ(太字/斜体/取り消し線でフィルタ...)
トップ15ツールセット12 種類のテキストツールテキストの追加特定の文字を削除など)  |  50 種以上のグラフ タイプガントチャートなど)  |  40を超える実用的な 数式誕生日に基づいて年齢を計算する、など)  |  19種の 挿入ツールQRコードの挿入パスから画像の挿入など)  |  12種類の 変換ツール単語に変換する通貨変換など)  |  7つの 結合&分割ツール高度な行のマージセルの分割など)  |  ...さらに多数
お好きな言語でKutoolsを使用できます ― 英語、スペイン語、ドイツ語、フランス語、中国語など40以上に対応!

Kutools for ExcelでExcelスキルを強化し、かつてない効率を体験しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と時間短縮を実現します。最も必要な機能を今すぐ取得...


Office TabはOfficeにタブ表示を追加し、作業効率を大幅に向上させます

  • Word、Excel、PowerPointでタブ編集とタブ閲覧を有効にします
  • 同じウィンドウ内の新しいタブで複数のドキュメントを開いたり作成したりできます。新しいウィンドウを開く必要はありません。
  • 生産性が50%向上し、1日に何百回ものマウスクリックも削減できます!