ad

在 Excel 下拉清单当选择多个项目 - 完全指南-英雄云拓展知识分享

匿名投稿 233 2024-02-28

在 Excel 下拉清单当选择多个项目 - 完全指南

Excel 下拉清单是确保资料一致性和易于输入的绝佳工具。但是,预设情况下,它们限制您只能选择一项。但是,如果您需要从同一个下拉清单当选择多个项目怎幺办?本综合指南将探讨在 Excel 下拉清单中启用多项选择、管理重复项、设定自订分隔符号和定义内涵这些清单的范围的方法。

启用下拉清单中的多项选择
  • 使用VBA程式码
  • 只需点击几下便可使用 tools for Excel

多选下拉清单的更多操作
  • 允许重复项目
  • 删除任何现有项目
  • 设定自订分隔符
  • 设定指定范围
  • 在受保护的工作表中履行

尖端:在利用以下方法之前,请确保您已事前在工作表中建立了下拉清单。如果您想了解如何建立资料验证下拉列表,请依照本文中的说明操作: 如何在 Excel 中建立资料验证下拉列表.

启用下拉清单中的多项选择

本节提供两类方法来帮助您在 Excel 中的下拉清单中启用多项选择。

使用VBA程式码

若要允许在下拉清单中进行多项选择,您可使用 Visual Basic利用程序 (VBA) 在 Excel 中。该脚本可以修改下拉清单的行动,使其成为多项选择清单。请按以下步骤操作。

第 1 步:开启工作表(程式码)编辑器
  1. 开启包括要为其启用多项选择的下拉清单的工作表。
  2. 右键单击工作表标签并选择 查看代码 从上下文菜单。

    在 Excel 下拉清单当选择多个项目 - 完全指南-英雄云拓展知识分享

步骤2:使用VBA程式码

现在复制以下 VBA 程式码并将其贴上到开启的工作表(程式码)视窗中。

VBA 代码:在 Excel 下拉清单中启用多项选择。

Private Sub Worksheet_Change(ByVal Target As Range)

'Updated by 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程式码:
  • 适用于至今为止工作表中的所有资料验证下拉列表,包括现有的和将来建立的。
  • 旨在避免在每一个单独的下拉清单当选择重复的项目。
  • 使用逗号作为所选项目的分隔符号。


只需点击几下便可使用 tools for Excel

如果您对 VBA 不满意,还有一个更简单的选择: Excel的tools's 多选下拉列表 特徵。这个使用者友善的工具简化了在下拉清单中启用多个选择的进程,提供了各种范围,例如特定范围、至今为止工作表、全部工作簿或所有开启的工作簿。另外,它还允许您自订分隔符号并轻鬆管理重复项,以满足您的不同需求。

后 安装 tools for Excel,转到 库工具 标签,选择 下拉列表 > 多选下拉列表。然后需要进行以下配置。

  1. 指定要套用此功能的位置 设定范围 部份。
  2. 指定贮存格中所选项目的分隔符号。
  3. 决定文字方向。
  4. 点击 OK.

结果

备注: 要利用此功能,请 下载并安装 tools for Excel 第一。


多选下拉清单的更多操作

本节搜集在资料验证下拉清单中启用多个选择时可能需要的不同场景。


允许下拉清单中出现重复的项目

当下拉清单中允许进行多项选择时,重复可能会成为问题。上面的 VBA 程式码不允许下拉清单中出现重复的项目。如果您需要保存重复的项目,请尝试本节中的 VBA 程式码。

VBA程式码:允许资料验证下拉清单中重复

Private Sub Worksheet_Change(ByVal Target As Range)

'Updated by 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 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 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 编码还是喜欢 tools 等更简单的解决方案,您现在都可以将标準下拉清单转换为动态的多选工具。有了这些技能,您现在就能够建立更动态且使用者友好的 Excel 文件。对那些渴望深入研究 Excel 功能的人,我们的网站具有丰富的教学。 在这里了解更多 Excel 提示和技能.


选择英雄云云表单=选择更智能的Excel

>>>>🚀🌟 点击注册 免费试用 更高级的-英雄云企业级云表单 🌟🚀 😃👉🌐>>>>

在现代企业管理中,数据的高效管理和处理至关重要。随着信息技术的不断发展,英雄云云表单已经成为了提高数据录入、管理和分析效率的不可或缺的工具。让我们来深入探讨英雄云-云表单的几大优势。

基础字段:多样性满足业务需求

英雄云云表单中包括了各种基础字段,如单行文本多行文本数字输入框单选框复选框下拉框下拉复选框日期时间分割线等。这些字段的多样性使用户可以根据具体的业务需求,轻松进行文本、数据和时间信息的录入或修改。例如,您可以使用单行文本字段录入员工姓名、产品型号等,或者使用下拉框进行多选,根据不同情况选择更加方便的字段类型。

高级字段:提升工作效率

英雄云云表单还提供了高级字段,如地址图片附件手写签名手机子表关联数据关联查询以及流水号。这些高级字段在基础字段的基础上升级,可帮助用户完成一些琐碎的工作。例如,使用地址字段可以避免逐字打字,而流水号字段可以自动生成规律性的编号,非常适用于合同编号生成等场景。

部门成员字段:精确管理与通讯录的关联

英雄云的部门成员字段允许企业对各个部门的成员进行精确管理。用户可以通过部门成员字段获取通讯录中的部门成员信息,应用于记录报销人、报销部门等场景。这些成员字段还细分为成员单选成员多选,可根据具体需求在通讯录中选择一个或多个成员。

聚合表:数据处理更智能

英雄云聚合表功能用于对已存在的表单数据进行聚合计算,从而得到一张聚合表,后续其他表单可调用聚合表进行数据联动、关联查询和关联数据等操作完成数据处理。这一功能可应用于多种场景,如进销存管理、财务管理和门店零售管理等,帮助企业完成数据处理,提高工作效率。

表单权限设置:灵活管理数据访问

英雄云的表单权限设置允许用户根据企业的具体需求管理表单的访问和操作权限。用户可以根据系统权限或自定义权限对不同成员或团队进行权限设置,以确保数据的安全和合规性。这一功能使企业能够根据变化的业务需求和团队结构,实时调整权限设置。

自定义打印模板:文档输出更便捷

英雄云云表单支持自定义打印模板,可将表单数据转换为可打印的Word文档。用户可以根据自己的需求进行排版和编辑,将产品规格说明书等文档轻松生成。这一功能提供了一种标准化的文档输出方式,简化了信息整理的过程。

综合来看,选择英雄云云表单意味着选择更智能、更灵活、更高效的数据管理工具。无论是提高工作效率,精确管理数据,还是实现数据处理,英雄云云表单都能满足您的多样化需求,助力您的业务发展。

如果您正在寻找一款强大的云表单工具,不妨考虑英雄云,它将为您带来更多的便捷和智能,助您事半功倍。


免责声明:

本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

上一篇:在Excel当选择单元格时如何显示注释?-英雄云拓展知识分享
下一篇:如何在Excel中列出或生成所有可能的组合?-英雄云拓展知识分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×