设置Excell下拉多个选项并可以多选

  1. 打开excell,找到你要设置选项的列,这里是第四列城市选项。
    在这里插入图片描述
  2. 选中你要设置选项的列,点击数据,找到数据验证
    在这里插入图片描述
  3. 找到数据验证在这里插入图片描述
  4. 点击设置,选择序列
    在这里插入图片描述
  5. 将你要设置的选项写在来源里面,并用“英文”逗号隔开。
    在这里插入图片描述
  6. 点击确定。
  7. 点击表格名字查看代码。
    在这里插入图片描述
  8. 将以下代码复制并保存在代码框里
Private Sub Worksheet_Change(ByVal Target As Range)
' Developed by Contextures Inc.
' www.contextures.com
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
If Target.Count > 1 Then GoTo exitHandler

On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler

If rngDV Is Nothing Then GoTo exitHandler

If Intersect(Target, rngDV) Is Nothing Then
   'do nothing
Else
  Application.EnableEvents = False
  newVal = Target.Value
  Application.Undo
  oldVal = Target.Value
  Target.Value = newVal
  If Target.Column = 4 Then
    If oldVal = "" Then
      'do nothing
      Else
      If newVal = "" Then
      'do nothing
      Else
        If InStr(1, oldVal, newVal) <> 0 Then
          If InStr(1, oldVal, newVal) + Len(newVal) - 1 = Len(oldVal) Then
            Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 1)
          Else
            Target.Value = Replace(oldVal, newVal & ",", "")
          End If
        Else
        Target.Value = oldVal & "," & newVal
'      NOTE: you can use a line break,
'      instead of a comma
'      Target.Value = oldVal _
'        & Chr(10) & newVal
        End If
      End If
    End If
  End If
End If

exitHandler:
  Application.EnableEvents = True
End Sub
  1. 修改你要设置的列数。
    在这里插入图片描述
  2. 在弹出框中点击保存,然后将excel保存为“.xltm”格式即可。
    在这里插入图片描述
    在这里插入图片描述
### 如何在Excel设置下拉列表 为了实现一个功能的下拉列表,在标准的Excel环境中不直接支持此特性,因为默认情况下,数据验证仅允许单个择。然而,可以通过组合使用辅助列和一些VBA宏编程来达到这一目的。 #### 方法一:利用辅助列与分隔符 1. 创建一个用于存储多个择的数据区域作为源表。 2. 使用数据验证创建常规的下拉菜单。 3. 用户每次择新项时,将其添加到单元格中的现有文本之后,用逗号或其他字符分隔开。 这种方法简单易行,但用户体验可能不是最佳,因为它需要用户手动管理已选项之间的分隔。 ```excel =IF(A1="", "Select Items", A1&", "&B1) ``` 上述公式假设A列为累积的择记录而B列为当前下拉框所在位置[^1]。 #### 方法二:借助VBA增强交互体验 编写一段简单的VBA脚本可以极大地改善操作流程提供真正的能力: - 右键点击工作簿标签页 -> 查看代码 -> 插入模块 -> 输入以下代码片段: ```vba Private Sub Worksheet_Change(ByVal Target As Range) Dim OldVal As String, NewVal As String If Not Intersect(Target, Me.Range("YourDropDownCell")) Is Nothing Then Application.EnableEvents = False ' 获取原始值 On Error Resume Next OldVal = Application.InputBox("Please enter previously selected items separated by commas.", Type:=2) ' 如果取消则恢复原状 If OldVal = "" Or OldVal = "False" Then GoTo ExitHandler ' 添加新的择至旧有列表 NewVal = OldVal & "," & Target.Value ' 清除目标单元格将更新后的字符串写回 With Target .ClearContents .Value = NewVal End With ExitHandler: Application.EnableEvents = True End If End Sub ``` 这段程序会在检测到特定单元格发生变化时触发对话框提示输入已有项目,从而构建起完整的集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的香农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值