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应用程序 窗口,将下面的代码复制并粘贴到空白脚本中。

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代码,则可以 免费安装 方便的工具- Kutools for Excel,其中包含一组有关下拉列表的实用程序,并且有一个选项 多选下拉列表 可以帮助您轻松地从下拉列表中的单元格中选择多个项目。

创建下拉列表后,请选择下拉列表单元格,然后单击 库工具 > 下拉列表 > 多选下拉列表 启用此实用程序。
doc kutools多选下拉列表1

然后可以将选定的下拉列表单元格选择到该单元格中的多个项目。

如果您是第一次使用此选项,则可以在应用此实用程序之前根据需要指定此实用程序的设置。

点击 库工具 > 下拉列表 >旁边的箭头 多选下拉列表 > 个人设置.
doc kutools多选下拉列表2

然后在 多选下拉列表设置 对话框,您可以

1)根据需要指定适用范围;

2)指定物品放置方向;

3)指定项目之间的分隔符;

4)指定是否不添加重复项并删除重复项。

点击 Ok 并点击 库工具 > 下拉列表 > 多选下拉列表 发挥作用。

Tips::要应用 多选下拉列表 实用程序,您需要 安装 首先。 如果要创建具有多个级别的下拉列表,则以下实用程序可能会为您提供帮助。

在Excel中轻松创建动态的2级或多级依赖下拉列表

在Excel中,创建2级或多级下拉列表很复杂。 在这里 动态下拉列表 实用程序 Kutools for Excel 可以帮你一个忙。 您唯一要做的就是按所示示例对数据进行排序,然后选择数据范围和输出范围,然后将其留给实用程序。  点击查看 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?
该评论由网站上的主持人最小化
嗨,维罗, 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 及更高版本支持在受保护工作表中进行此作业。
这里还没有评论

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护