如何在Excel中創建具有多個選擇或值的下拉列表?
默認情況下,您只能在 Excel 的數據驗證下拉列表中選擇一項。 如何在下拉列表中進行多項選擇,如下 gif 所示? 本文中的方法可以幫助您解決問題。
使用VBA代碼創建具有多個選擇的下拉列表
1) 允許在一個下拉列表中多選,不重復
2) 允許在下拉列表中進行多項選擇而不重復(通過再次選擇
刪除現有項目)
使用出色的工具輕松創建具有多個選擇的下拉列表
下拉列表的更多教程...
使用VBA代碼創建具有多個選擇的下拉列表
本節提供兩個 VBA 代碼來幫助您在工作表的下拉列表中進行多項選擇。 這兩個VBA代碼可以實現:
VBA 代碼 1:允許在下拉列表中進行多項選擇而不重復
VBA代碼2:允許在下拉列表中進行多項選擇而沒有重復(通過再次選擇刪除現有項目)
您可以應用以下 VBA 代碼之一在 Excel 工作表的下拉列表中進行多項選擇。 請執行以下操作。
1. 打開包含要從中進行多項選擇的數據驗證下拉列表的工作表。 右鍵單擊工作表選項卡并選擇 查看代碼 從上下文菜單。
2.在 Microsoft Visual Basic應用程序 窗口,將下面的VBA代碼復制到代碼窗口中。 看截圖:
VBA 代碼 1:允許在下拉列表中進行多項選擇而不重復
Private Sub Worksheet_Change(ByVal Target As Range)
Updated by Extendoffice 2019/11/13
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
If Target.Count > 1 Then Exit Sub
On Error Resume Next
Set xRng = Cells.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
If Not Application.Intersect(Target, xRng) Is Nothing Then
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" Then
If xValue2 <> "" Then
If xValue1 = xValue2 Or _
InStr(1, xValue1, ", " & xValue2) Or _
InStr(1, xValue1, xValue2 & ",") Then
Target.Value = xValue1
Else
Target.Value = xValue1 & ", " & xValue2
End If
End If
End If
End If
Application.EnableEvents = True
End Sub
3。 按 其他 + Q 關閉鍵 Microsoft Visual Basic應用程序 窗口。
現在您可以從當前工作表的下拉列表中選擇多個項目。
假設您不小心選擇了一個項目并且需要在不清除整個單元格并重新開始的情況下將其刪除。 下面的 VBA 代碼 2 可以幫你一個忙。
VBA代碼2:允許在下拉列表中進行多項選擇而沒有重復(通過再次選擇刪除現有項目)
Private Sub Worksheet_Change(ByVal Target As Range)
Updated by Extendoffice 2023/01/11
Updated by Ken Gardner 2022/07/11
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim semiColonCnt As Integer
Dim xType As Integer
If Target.Count > 1 Then Exit Sub
On Error Resume Next
xType = 0
xType = Target.Validation.Type
If xType = 3 Then
Application.ScreenUpdating = False
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" Then
If xValue2 <> "" Then
If xValue1 = xValue2 Or xValue1 = xValue2 & ";" Or xValue1 = xValue2 & "; " Then leave the value if only one in list
xValue1 = Replace(xValue1, "; ", "")
xValue1 = Replace(xValue1, ";", "")
Target.Value = xValue1
ElseIf InStr(1, xValue1, "; " & xValue2) Then
xValue1 = Replace(xValue1, xValue2, "") removes existing value from the list on repeat selection
Target.Value = xValue1
ElseIf InStr(1, xValue1, xValue2 & ";") Then
xValue1 = Replace(xValue1, xValue2, "")
Target.Value = xValue1
Else
Target.Value = xValue1 & "; " & xValue2
End If
Target.Value = Replace(Target.Value, ";;", ";")
Target.Value = Replace(Target.Value, "; ;", ";")
If Target.Value <> "" Then
If Right(Target.Value, 2) = "; " Then
Target.Value = Left(Target.Value, Len(Target.Value) - 2)
End If
End If
If InStr(1, Target.Value, "; ") = 1 Then check for ; as first character and remove it
Target.Value = Replace(Target.Value, "; ", "", 1, 1)
End If
If InStr(1, Target.Value, ";") = 1 Then
Target.Value = Replace(Target.Value, ";", "", 1, 1)
End If
semiColonCnt = 0
For i = 1 To Len(Target.Value)
If InStr(i, Target.Value, ";") Then
semiColonCnt = semiColonCnt + 1
End If
Next i
If semiColonCnt = 1 Then remove ; if last character
Target.Value = Replace(Target.Value, "; ", "")
Target.Value = Replace(Target.Value, ";", "")
End If
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End Sub
:
1)。 下拉列表中不允許出現重復值。
2)。 上面的 VBA 代碼 2 由我們的熱心
用戶 Ken Gardner 于 2022/07/11 提供。
3)。 請將工作簿另存為 Excel啟用宏的工作簿 為了使代碼在將來繼續工作。
4)。 添加 VBA 代碼 2 后,您可以通過在下拉列表中再次選擇現有項目來刪除它。 請看下面的 gif:
使用出色的工具輕松創建具有多個選擇的下拉列表

如您所見,上面的 VBA 代碼并不好處理。 在此強烈推薦 多選下拉列表 的特點 Kutools for Excel 幫助您通過點擊輕松處理此任務。 使用此功能,您可以根據需要輕松地從下拉列表中選擇指定范圍、當前工作表、當前工作簿或所有打開的工作簿中的多個項目。
Tips:: 在應用此工具之前,請先安裝 Kutools for Excel 首先。 立即前往免費下載.
選擇
Kutools >
下拉列表 >
多選下拉列表.
在
多選下拉列表
對話框,進行以下設置。
2.1) 指定你想應用這個特性的地方 設定范圍 部分;
2.2) 指定單元格中選中項的分隔符;
2.3) 決定文字方向;
2.4)點擊 OK.
結果
備注: 要應用此功能,請 下載并安裝 Kutools for Excel 第一。
相關文章:
在Excel下拉列表中鍵入時自動完成 如果您有一個包含大值的數據驗證下拉列表,則需要在列表中向下滾動以查找合適的列表,或直接在列表框中鍵入整個單詞。 如果在下拉列表中鍵入第一個字母時有允許自動完成的方法,一切將變得更加容易。 本教程提供了解決問題的方法。
在Excel中從另一個工作簿創建下拉列表 在工作簿中的工作表之間創建數據驗證下拉列表非常容易。 但是,如果數據驗證所需的列表數據位于另一個工作簿中,您將怎么辦? 在本教程中,您將詳細了解如何從Excel中的另一個工作簿創建拖放列表。
在Excel中創建可搜索的下拉列表 對于具有眾多價值的下拉列表,找到合適的價值并非易事。 以前,我們已經介紹了一種在下拉框中輸入第一個字母時自動完成下拉列表的方法。 除了自動完成功能之外,您還可以使下拉列表可搜索,以提高在下拉列表中查找適當值時的工作效率。 為了使下拉列表可搜索,請嘗試本教程中的方法。
在Excel下拉列表中選擇值時自動填充其他單元格 假設您已經基于單元格區域B8:B14中的值創建了一個下拉列表。 在下拉列表中選擇任何值時,都希望在選定單元格中自動填充單元格范圍C8:C14中的相應值。 為了解決該問題,本教程中的方法將對您有所幫助。
下拉列表的更多教程...
最佳辦公生產力工具
將小時轉化為分鐘 Kutools for Excel!
準備好增強您的 Excel 任務了嗎? 利用的力量 Kutools for Excel - 您終極的節省時間的工具。 簡化復雜的任務并像專業人士一樣瀏覽數據。 以閃電般的速度體驗 Excel!
為什么需要 Kutools for Excel
??? 超過 300 項強大功能: Kutools 包含 300 多項高級功能,可簡化您在 1500 多種場景中的工作。
?? 卓越的數據處理能力:合并單元格、刪除重復項并執行高級數據轉換 - 所有這些都不費吹灰之力!
?? 高效的批量操作:當你可以聰明地工作時,為什么還要付出額外的努力呢? 輕松批量導入、導出、組合和調整數據。
?? 可定制的圖表和報告:訪問各種附加圖表并生成富有洞察力的報告。
??? 強大的導航窗格:通過強大的列管理器、工作表管理器和自定義收藏夾獲得優勢。
?? 七種類型的下拉列表:通過各種功能和類型的下拉列表使數據輸入變得輕而易舉。
?? 用戶友好:對于初學者來說輕而易舉,對于專家來說是一個強大的工具。
立即下載,與 Excel 一起穿越時空!
閱讀更多
免費下載... 采購...
Office Tab 為 Office 帶來選項卡式界面,讓您的工作更輕松
在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
在同一窗口的新選項卡中而不是在新窗口中打開并創建多個文檔。
每天將您的工作效率提高50%,并減少數百次鼠標單擊!