Note: The other languages of the website are Google-translated. Back to English

如何從下拉列表中選擇多個項目到Excel中的單元格中?

下拉列表在Excel的日常工作中經常使用。 默認情況下,在下拉列表中只能選擇一項。 但是有時,您可能需要從下拉列表中將多個項目選擇到一個單元格中,如下圖所示。 如何在Excel中處理它?

doc從下拉列表1中選擇多個項目 doc箭頭向右 doc從下拉列表2中選擇多個項目

從下拉列表中選擇多個項目到帶有VBA的單元格中

使用Kutools for Excel的便捷選項從下拉列表中選擇多個項目到單元格中


從下拉列表中選擇多個項目到帶有VBA的單元格中

這裡有一些VBA可以幫您解決此工作。

從單元格的下拉列表中選擇重複項

1.創建下拉列表後,右鍵單擊工作表選項卡以選擇 查看代碼 從上下文菜單。
doc從下拉列表3中選擇多個項目

2.然後在 Microsoft Visual Basic for Applications 窗口,將下面的代碼複製並粘貼到空白腳本中。

VBA:從單元格的下拉列表中選擇多個項目

Private Sub Worksheet_Change(ByVal Target As Range)
'UpdatebyExtendoffice20221111
    Dim xRgVal As Range
    Dim xStrNew As String
    On Error Resume Next
    Set xRgVal = Cells.SpecialCells(xlCellTypeAllValidation)
    If (Target.Count > 1) Or (xRgVal Is Nothing) Then Exit Sub
    If Intersect(Target, xRgVal) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
    Application.EnableEvents = False
    xStrNew = Target.Value
    Application.Undo
    If xStrNew = Target.Value Then
    Else
    xStrNew = xStrNew & " " & Target.Value
    Target.Value = xStrNew
    End If
    Application.EnableEvents = True
End Sub

3.保存代碼並關閉窗口以返回到下拉列表。 現在,您可以從下拉列表中選擇多個項目。

注意:

1.使用VBA,它可以按空格分隔項目,您可以更改 xStrNew = xStrNew& “” & 目標價值 他人根據需要更改定界符。 例如, xStrNew = xStrNew&“," & 目標價值 將用逗號分隔項目。

2.此VBA代碼適用於工作表中的所有下拉列表。

從下拉列表中選擇多個項目到一個單元格,無需重複

如果只想從下拉列表中選擇一個唯一項,則可以重複上述步驟並使用以下代碼。

VBA:從下拉列表到單元格中選擇多個項目,無需重複

Private Sub Worksheet_Change(ByVal Target As Range)
'UpdatebyExtendoffice20221111
    Dim I As Integer
    Dim xRgVal As Range
    Dim xStrNew As String
    Dim xStrOld As String
    Dim xFlag As Boolean
    Dim xArr
    On Error Resume Next
    Set xRgVal = Cells.SpecialCells(xlCellTypeAllValidation)
    If (Target.Count > 1) Or (xRgVal Is Nothing) Then Exit Sub
    If Intersect(Target, xRgVal) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
    Application.EnableEvents = False
    xFlag = True
    xStrNew = " " & Target.Value & " "
    Application.Undo
    xStrOld = Target.Value
    If InStr(1, xStrOld, xStrNew) = 0 Then
        xStrNew = xStrNew & xStrOld & " "
    Else
        xStrNew = xStrOld
    End If
    Target.Value = xStrNew
    Application.EnableEvents = True
End Sub

以上兩個 VBA 代碼都不支持刪除部分單元格內容,只支持清除單元格的所有項。


使用Kutools for Excel的便捷選項從下拉列表中選擇多個項目到單元格中

如果您不熟悉VBA代碼,則可以 免費安裝 方便的工具- Excel的Kutools,其中包含一組有關下拉列表的實用程序,並且有一個選項 多選下拉列表 可以幫助您輕鬆地從下拉列表中的單元格中選擇多個項目。

創建下拉列表後,請選擇下拉列表單元格,然後單擊 庫工具 > 下拉列表 > 多選下拉列表 啟用此實用程序。
doc kutools多選下拉列表1

然後可以將選定的下拉列表單元格選擇到該單元格中的多個項目。

如果您是第一次使用此選項,則可以在應用此實用程序之前根據需要指定此實用程序的設置。

點擊 庫工具 > 下拉列表 >旁邊的箭頭 多選下拉列表 > 設定.
doc kutools多選下拉列表2

然後在 多選下拉列表設置 對話框,您可以

1)根據需要指定適用範圍;

2)指定物品放置方向;

3)指定項目之間的分隔符;

4)指定是否不添加重複項並刪除重複項。

點擊 Ok 並點擊 庫工具 > 下拉列表 > 多選下拉列表 發揮作用。

尖端:要應用 多選下拉列表 實用程序,您需要 安裝 首先。 如果要創建具有多個級別的下拉列表,則以下實用程序可能會為您提供幫助。

在Excel中輕鬆創建動態的2級或多級依賴下拉列表

在Excel中,創建2級或多級下拉列表很複雜。 在這裡 動態下拉列表 的效用 Excel的Kutools 可以幫你一個忙。 您唯一要做的就是按示例所示對數據進行排序,然後選擇數據范圍和輸出範圍,然後將其留給實用程序。  點擊查看 30 天免費試用!
doc高級合併行
 
Kutools for Excel:擁有超過 300 個方便的 Excel 加載項,免費試用,不受限制 30 天。

最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (26)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
添加後,下拉列表中的數據,刪除不起作用。
網站主持人對此評論進行了最小化
我發現了同樣的問題。 我想我找到了克服它的方法。 在代碼的底部,您將看到代碼“xStrNew = xStrOld”。 相反,讓它說 xStrNew = " "

這個對我有用。
網站主持人對此評論進行了最小化
你還有這個代碼的機會嗎? 我正在嘗試按照您所說的做,但文本仍然重複。
謝謝
網站主持人對此評論進行了最小化
我很抱歉,但我沒有。 但是,我只是查看了上面的代碼,似乎作者根據我的建議編輯了代碼。

在本文的主線程上發布您的問題。
網站主持人對此評論進行了最小化
在第一個代碼中的第 6 行和第 7 行(第二個代碼中的 10-11)之間添加以下行: If Target.Value = "" Then Exit Sub
網站主持人對此評論進行了最小化
我使用了這個“從下拉列表中選擇多個項目到一個單元格而不重複”
這就是發生的事情
1.多選發生沒有問題。
2.問題是當我嘗試編輯和刪除一個選項時。 我無法刪除選項。 它不斷增加。
網站主持人對此評論進行了最小化
您將如何應用此功能但使其不存在冗餘值? 任何幫助,將不勝感激!
網站主持人對此評論進行了最小化
如果我使用複選框創建帶有下拉列表的工作表,是否可以使用此復選框功能共享此工作簿?
網站主持人對此評論進行了最小化
我還發現,在使用更新的 VBA 代碼選擇多個項目後,我仍然無法清除單元格,它只是不斷增加。
有人對此有解決方案嗎?
網站主持人對此評論進行了最小化
嗨,Rusty,我更新了代碼以使其更穩定。 但是因為單元格在數據驗證中,空白是在數據驗證之外,代碼無法解決這個問題。
網站主持人對此評論進行了最小化
代碼有效,但跨越所有單元格並在單元格中相乘並且不允許刪除你能幫忙嗎?
網站主持人對此評論進行了最小化
Quando quero deletar alguma opção ou todas dá erro。 Como posso 解析器?
網站主持人對此評論進行了最小化
你好! Como puedo usar este codigo para todo un worksheet y no solo para unapesana?
網站主持人對此評論進行了最小化
嗨,Vero,Kutools for Excel 的多選下拉列表功能支持從整個工作表或跨工作簿的下拉列表中選擇多個項目,只需在多選下拉列表設置對話框中指定指定範圍。
網站主持人對此評論進行了最小化
對於您提供的第一個公式,我該如何做到這一點:) 提前致謝!
網站主持人對此評論進行了最小化
卓悅,
selon le Premier 示例 tout fonctionne très bien jusqu'à ce que je verrouille la feuille。
quand la feuille est verrouillée, je n'ai plus le choix multiple !
評論公平?
提前致謝
網站主持人對此評論進行了最小化
嗨,很抱歉。 我們將在下一個版本升級我們的功能以避免這個問題。 感謝您的反饋。
網站主持人對此評論進行了最小化
BCP謝謝
Mais à quand la nouvelle 版本?
網站主持人對此評論進行了最小化
您好,新版本正在規劃中,由於下一個版本將升級多項功能,可能需要一些時間。
網站主持人對此評論進行了最小化
您好,我們已經為您更新了這個版本,但這是一個測試版,請從這裡下載: https://download.extendoffice.com/downloads/Kutools-for-Excel/beta/26.10/KutoolsforExcelSetup.Inno.exe
如果有任何問題,歡迎您的反饋。
網站主持人對此評論進行了最小化
謝謝,
Je vais la télécharger et Essayer。
博訥journée
網站主持人對此評論進行了最小化
該代碼有效,但不會讓我刪除有人可以發布新代碼。
網站主持人對此評論進行了最小化
¿Cómo puedo hacer para que el orden en que se coloque el texto, sea tan cuál como yo quiera?

例如:
我的文本列表如下:
特拉米塔埃斯特阿桑托
坐標
分析 Y 推薦

選擇:
特拉米塔埃斯特阿桑托
分析 Y 推薦

在我看來
分析 Y 推薦,TRAMITAR ESTE ASUNTO

o sea, los de abajo me aparecen primero, pero quiero que sea en el orden en que voy seleccionando...
TRAMITAR ESTE ASUNTO,分析 Y 推薦......
網站主持人對此評論進行了最小化
嗨,Gorgelys,Kutools 的多選下拉列表可以幫助你。 您選擇的項目將按您想要的順序排列。
網站主持人對此評論進行了最小化
Como posso utilizar a função com a planilha bloqueada?
網站主持人對此評論進行了最小化
嗨,Macros,試試下面的代碼,它支持在受保護工作表的下拉列表中選擇多項。
Private Sub Worksheet_Change(ByVal Target As Range)
'UpdatebyExtendoffice20221111
    Dim xRgVal As Range
    Dim xStrNew As String
    On Error Resume Next  
    xType = 0
    xType = Target.Validation.Type
    If xType <> 3 Then Exit Sub
    If (Target.Count > 1) Then Exit Sub

    If Target.Value = "" Then Exit Sub
    Application.EnableEvents = False
    xStrNew = Target.Value
    Application.Undo
    If xStrNew = Target.Value Then
    Else
    xStrNew = xStrNew & " " & Target.Value
    Target.Value = xStrNew
    End If
    Application.EnableEvents = True
End Sub

並且 Kutools for Excel 26.1 及更高版本支持受保護工作表中的這項工作。
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護