KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

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

著者Siluvia変更日

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

Excel のドロップダウン リストで複数選択を行うアニメーション デモのスクリーンショット。

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

ドロップダウンリストで複数選択を有効にする

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

VBA コードを使用する

ドロップダウンリストで複数選択を有効にするには、Excel の「Visual Basic for Applications(VBA)」をご利用いただけます。このスクリプトを使えば、ドロップダウンリストの動作をカスタマイズし、複数選択が可能なリストに変更できます。以下の手順に従って設定してください。

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

Excel VBA エディターに貼り付けられた VBA コードのスクリーンショット

結果

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

Excel のドロップダウン リストで複数選択を行うアニメーション デモのスクリーンショット

注記
上記の 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」をクリックして、設定を完了しましょう。
    範囲および区切り文字オプションの設定が可能な Kutools の複数選択ドロップダウン リスト構成画面のスクリーンショット
結果

これで、制限された範囲内のドロップダウンリストが設定されたセルをクリックすると、その横にリストボックスが表示されます。「+」ボタンをクリックしてアイテムをドロップダウンセルに追加したり、「-」ボタンをクリックして不要なアイテムを削除したりできます。下記のデモをご覧ください:

Kutools を使用して Excel のドロップダウン リストで複数選択を管理するデモのスクリーンショット

注記
  • セル内で選択したアイテム数を縦方向に表示したい場合は、「改行後に区切り記号を挿入」オプションをオンにしてください。横方向のリスト表示をご希望の場合は、このオプションをオフのままにしてお使いください。
  • ドロップダウンリストに検索バーを追加したい場合は、「検索機能を有効にする」オプションをオンにしてください。
  • この機能をご利用になるには、まず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
結果

これで、現在のワークシート内のドロップダウンリストから複数のアイテムを選択できるようになります。同じアイテムをリスト内に繰り返したい場合は、再度そのアイテムをリストから選択してください。スクリーンショットをご覧ください:

Excel のドロップダウン リストで重複選択を行うアニメーション デモのスクリーンショット


ドロップダウンリストから既存のアイテムを削除する

ドロップダウンリストから複数のアイテムを選択した後、リスト内の既存アイテムをセルから削除する必要が生じることがあります。本セクションでは、この操作を実行するための別の 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 です。

Excel のドロップダウン リストから既存の項目を削除する方法を示すアニメーション デモのスクリーンショット


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

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

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

delimiter = ", "

カンマを必要な区切り文字に変更するだけで済みます。たとえば、アイテムをセミコロンで区切るようにしたい場合は、次の行を変更してください:

delimiter = "; "
注記:これらの VBA コードで区切り文字を改行文字に変更するには、次の行に変更してください:
delimiter = vbNewLine

制限された範囲を設定する

上記の 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 のヒントとテクニックはこちら

最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスト:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式を作成    データ分析とチャート作成  拡張機能を呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失わずに列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 VLookup     複数シート間での VLookup      ファジーマッチ....
高度なドロップダウンリストドロップダウンリストをすばやく作成     連動型ドロップダウンリスト     複数選択可能なドロップダウンリスト....
列マネージャー指定した数の列を追加列を移動非表示列の表示状態を切り替え範囲と列を比較...
注目の機能グリッドフォーカス     デザインビュー   強化された数式バー    ワークブック&シートマネージャー     リソースライブラリ(オートテキスト)  日付ピッカー     ワークシートの統合    暗号化/セルの復号化    リストからメール送信     スーパーフィルター      特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線…) 。。。
トップ15 ツールセット12 テキストツールテキストの追加特定の文字を削除、…)   50+チャートタイプガントチャート、…)   40+実用的な数式誕生日に基づいて年齢を計算します、…)   19 挿入ツールQR コードを挿入パスから画像を挿入、…)   12 変換ツール単語に変換する為替レートの変換、…)   7 結合と分割ツール高度な行のマージセルの分割、…)…他にも多数
Kutools は英語、スペイン語、ドイツ語、フランス語、中国語、および40+の他の言語にも対応しており、お好みの言語でお使いいただけます!

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 アプリケーションを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携でさらにパワーアップ— Office アプリケーション全体で生産性を合理化
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • ベストバリュー— 個別アドイン購入よりお得