Excel ドロップダウン リストで複数の項目を選択する - 完全ガイド
Excel のドロップダウン リストは、データの一貫性と入力の容易さを確保するための素晴らしいツールです。ただし、デフォルトでは、選択できる項目は 1 つだけです。しかし、同じドロップダウン リストから複数の項目を選択する必要がある場合はどうすればよいでしょうか?この包括的なガイドでは、Excel ドロップダウン リストでの複数選択の有効化、重複の管理、カスタム区切り文字の設定、およびこれらのリストの範囲の定義を行う方法について説明します。
ドロップダウンリストでの複数選択の有効化
このセクションでは、Excel のドロップダウン リストで複数選択を有効にするための 2 つの方法を説明します。
VBA コードの使用
ドロップダウン リストで複数の選択を許可するには、次を使用できます。 アプリケーション用のVisual Basic (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 コード:
- 現在のワークシート内のすべてのデータ検証ドロップダウン リスト (既存のワークシートと今後作成されるワークシートの両方) に適用されます。
- 各ドロップダウン リストで同じ項目を複数回選択できないようにします。
- 選択した項目の区切り文字としてカンマを使用します。他の区切り文字を使用する場合は、 区切り文字を変更するにはこのセクションを参照してください.
数回のクリックでExcel用Kutoolsを使用する
VBA に慣れていない場合は、より簡単な代替手段があります。 Kutools for Excel's 複数選択ドロップダウンリスト 特徴。このユーザーフレンドリーなツールにより、ドロップダウン リストでの複数選択の有効化が簡素化され、さまざまなニーズに合わせてセパレーターをカスタマイズし、重複を簡単に管理できるようになります。
後 Kutools for Excelのインストール、に行きます クツール タブ、選択 ドロップダウンリスト > 複数選択ドロップダウンリスト。次に、次のように設定する必要があります。
- 複数の項目を選択する必要があるドロップダウン リストを含む範囲を指定します。
- ドロップダウン リストのセルで選択した項目の区切り文字を指定します。
- クリック 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 = "; "
delimiter = vbNewLine
指定範囲を設定する
上記の VBA コードは、現在のワークシート内のすべてのドロップダウン リストに適用されます。 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 コーディングに慣れている場合でも、Kutools のようなより単純なソリューションを好む場合でも、標準のドロップダウン リストを動的な複数選択ツールに変換できる機能が追加されました。これらのスキルがあれば、よりダイナミックでユーザーフレンドリーな Excel ドキュメントを作成できるようになります。 Excel の機能をさらに詳しく知りたい人のために、当社の Web サイトには豊富なチュートリアルが用意されています。 Excel のヒントとテクニックの詳細については、こちらをご覧ください.
関連記事
Excelのドロップダウンリストに入力するとオートコンプリート
大きな値を持つデータ検証ドロップダウンリストがある場合は、適切なものを見つけるためだけにリストを下にスクロールするか、リストボックスに単語全体を直接入力する必要があります。 ドロップダウンリストの最初の文字を入力するときにオートコンプリートを許可する方法があれば、すべてが簡単になります。 このチュートリアルでは、問題を解決する方法を説明します。
Excelで別のブックからドロップダウンリストを作成する
ブック内のワークシート間でデータ検証ドロップダウンリストを作成するのは非常に簡単です。 しかし、データ検証に必要なリストデータが別のブックにある場合は、どうしますか? このチュートリアルでは、Excelの別のブックからドロップファウンリストを作成する方法について詳しく学習します。
Excelで検索可能なドロップダウンリストを作成する
多数の値を持つドロップダウンリストの場合、適切な値を見つけるのは簡単な作業ではありません。 以前、ドロップダウンボックスに最初の文字を入力したときにドロップダウンリストをオートコンプリートする方法を導入しました。 オートコンプリート機能に加えて、ドロップダウンリストを検索可能にして、ドロップダウンリストで適切な値を見つける作業効率を高めることもできます。 ドロップダウンリストを検索可能にするには、このチュートリアルの方法を試してください。
Excelのドロップダウンリストで値を選択すると、他のセルに自動入力されます
セル範囲B8:B14の値に基づいてドロップダウンリストを作成したとします。 ドロップダウンリストで任意の値を選択する場合、セル範囲C8:C14の対応する値が選択したセルに自動的に入力されるようにします。 問題を解決するために、このチュートリアルの方法はあなたに有利になります。
最高のオフィス生産性向上ツール
🤖 | 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% 向上させ、毎日何百回もマウス クリックを減らすことができます!