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

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

作者: シルヴィア 最終更新日:2024年03月26日

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

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

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

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

VBA コードの使用

ドロップダウン リストで複数の選択を許可するには、次を使用できます。 アプリケーション用のVisual Basic (VBA)エクセルで。スクリプトは、ドロップダウン リストの動作を変更して、複数選択リストにすることができます。以下のようにしてください。

ステップ 1: シート (コード) エディターを開く
  1. 複数選択を有効にするドロップダウン リストを含むワークシートを開きます。
  2. シートタブを右クリックして選択します コードを表示 コンテキストメニューから選択します。
ステップ 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 コード:
  • 現在のワークシート内のすべてのデータ検証ドロップダウン リスト (既存のワークシートと今後作成されるワークシートの両方) に適用されます。
  • 各ドロップダウン リストで同じ項目を複数回選択できないようにします。
  • 選択した項目の区切り文字としてカンマを使用します。他の区切り文字を使用する場合は、 区切り文字を変更するにはこのセクションを参照してください.

数回のクリックでExcel用Kutoolsを使用する

VBA に慣れていない場合は、より簡単な代替手段があります。 Kutools for Excel's 複数選択ドロップダウンリスト 特徴。このユーザーフレンドリーなツールにより、ドロップダウン リストでの複数選択の有効化が簡素化され、さまざまなニーズに合わせてセパレーターをカスタマイズし、重複を簡単に管理できるようになります。

Kutools for Excelのインストール、に行きます クツール タブ、選択 ドロップダウンリスト > 複数選択ドロップダウンリスト。次に、次のように設定する必要があります。

  1. 複数の項目を選択する必要があるドロップダウン リストを含む範囲を指定します。
  2. ドロップダウン リストのセルで選択した項目の区切り文字を指定します。
  3. クリック 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 コードを使用すると、ドロップダウン リストから複数の項目を選択し、すでに選択した項目を簡単に削除できます。複数の項目を選択した後、特定の項目を削除したい場合は、リストから再度選択するだけです。


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

上記の 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 = "あなたのパスワード" ワークシートを保護するために使用する実際のパスワードを使用します。たとえば、パスワードが「」の場合、abc123" の場合、行は次のようになります。 pswd = "abc123".

Excel ドロップダウン リストで複数の選択を有効にすることにより、ワークシートの機能と柔軟性を大幅に強化できます。 VBA コーディングに慣れている場合でも、Kutools のようなより単純なソリューションを好む場合でも、標準のドロップダウン リストを動的な複数選択ツールに変換できる機能が追加されました。これらのスキルがあれば、よりダイナミックでユーザーフレンドリーな Excel ドキュメントを作成できるようになります。 Excel の機能をさらに詳しく知りたい人のために、当社の Web サイトには豊富なチュートリアルが用意されています。 Excel のヒントとテクニックの詳細については、こちらをご覧ください.

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

🤖 Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行   |  コードを生成  |  カスタム数式の作成  |  データを分析してグラフを生成する  |  Kutools関数を呼び出す...
人気の機能: 重複を検索、強調表示、または識別する   |  空白行を削除する   |  データを失わずに列またはセルを結合する   |   数式なしのラウンド ...
スーパールックアップ: 複数の基準の VLookup    複数の値の VLookup  |   複数のシートにわたる VLookup   |   ファジールックアップ ....
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する   |  依存関係のドロップダウン リスト   |  複数選択のドロップダウンリスト ....
列マネージャー: 特定の数の列を追加する  |  列の移動  |  Toggle 非表示列の表示ステータス  |  範囲と列の比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   ビッグフォーミュラバー    ワークブックとシートマネージャー   |  リソースライブラリ (自動テキスト)   |  日付ピッカー   |  ワークシートを組み合わせる   |  セルの暗号化/復号化    リストごとにメールを送信する   |  スーパーフィルター   |   特殊フィルター (太字/斜体/取り消し線をフィルター...) ...
上位 15 のツールセット12 テキスト ツール (テキストを追加, 文字を削除する、...)   |   50+ チャート 種類 (ガントチャート、...)   |   40+ 実用的 (誕生日に基づいて年齢を計算する、...)   |   19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...)   |   12 変換 ツール (数字から言葉へ, 通貨の換算、...)   |   7 マージ&スプリット ツール (高度な結合行, 分割セル、...)   |   ... もっと

Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。  最も必要な機能を入手するにはここをクリックしてください...


Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!