excel利用VBA生成无重复无空值的数据有效性下拉列表
发布时间:2023-05-11 08:28:50
在Excel工作表的某个单元格中应用数据有效性设置来制作下拉列表时,如果引用的行或列区域中包含空单元格或重复项,那么在有效性下拉列表中会与原区域中的内容完全相同,也会包含空值或重复项,显得有些不够美观。例如下图是A1单元格的一个下拉列表。
通常可以去掉重复项和空单元格后再设置数据有效性,但如果不想改变单元格的结构,可以使用下面的VBA代码来解决这个问题,假如要设置下拉列表的单元格为D5,数据区域为K8:K38,步骤如下:
1.按Alt+F11,打开VBA编辑器。
2.在“工程”窗口中双击要包含数据有效性设置的工作表,在右侧代码窗口中输入下列代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RowNum, ListRows, ListStartRow, ListColumn As Integer
Dim TheList As String
Dim Repeated As Boolean
If Target.Address <> "$D$5" Then Exit Sub
With Range("k8:K38")
ListRows = .Rows.Count
ListStartRow = .Row
ListColumn = .Column
End With
For RowNum = 0 To ListRows - 1
Repeated = False
If Not IsEmpty(Cells(ListStartRow + RowNum, ListColumn)) Then
For i = 0 To RowNum - 1
If Cells(ListStartRow + RowNum, ListColumn) = Cells(ListStartRow + i, ListColumn) Then
Repeated = True
Exit For
End If
Next i
If Not Repeated Then TheList = TheList & Cells(ListStartRow + RowNum, ListColumn) & ","
End If
Next RowNum
TheList = Left(TheList, Len(TheList) - 1)
With Range("D5").Validation
.Delete
.Add _
Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=TheList
End With
End Sub
3.关闭VBA编辑器返回Excel界面,选择D5单元格,单击下拉箭头即可看到不包含空值和无重复的下拉列表。
说明:上述代码使用了工作表的SelectionChange事件,当在工作表中重新选择单元格后会执行上述代码。需根据实际将代码中的单元格“D5”和区域“k8:K38”进行更改。


猜你喜欢
- 热血无赖是一款非常不错的游戏,有很多的用户都在畅玩,最近有部分们的用户们反应在玩耍这款叫做热血无赖游戏的时候,发现只要一运行游戏就会闪退,导
- 电脑最怕遇到死机或蓝屏的问题,Win7系统使用过程中出现了蓝屏0X0000007A,遇到蓝屏很多人都会选择重装系统,如果不搞清楚蓝屏的原因,
- 刚刚小编发布了win8/win8.1如何直接升级到win10技术者预览版?,如果你担心win10不太成熟,安装双系统无疑是个好办法啊!!!下
- wps文字怎样制作表格呢?下面小编为大家介绍如何操作:wps文字制作表格的方法一通过“插入”—“表格”—根据行列要求通过选择方格的形式插入表
- 一些用户会在虚拟机内安装其它的系统作为测试使用,而有的用户觉得在虚拟机和系统的桌面之间来回切换有点麻烦,于是想知道有没有什么快捷的切换方法,
- 法语助手如何复习单词?法语助手是一款非常好用的学法语软件,法语助手为用户提供了海量的英法语词汇,让我们可以更好的学习,那么我们在法语助手中该
- 由于手抖导致重要的笔记在备忘录里就被永久删除了,立马打开了 Mac,想趁着 iCloud 将删除操作同步到 Mac 上的备忘录前救回被删笔记
- 想要自定义时间和日期吗?默认情况下,Mac菜单栏以简单的小时和分钟数字格式显示时间。其实,你也可以自定义它并添加星期几,日期,甚至是秒针。下
- Win7系统笔记本电脑如何使用蓝牙连接蓝牙音箱呢?不少用户都有用蓝牙音箱,但是却不了解如何使用笔记本进行连接,下面就给大家分享Win7系统笔
- 咱们在 操纵Excel表格 停止 一样平常办公时, 常常 需求 建造 林林总总的表格, 咱们在 面临一个表格,想要统计某一个数据的各项数值,
- 日常工作中都会遇到一些不规范的数据,对于数据的提取是个头疼的事情,今天教大家用Power Query快速提取你想要的内容,超简单,又实用的技
- Q:Windows 10集成全息技术意味着什么?A:Windows 10 是第一个提供可于独立设备上识别手势和环境的 API 的全息计算平台
- 怎样才能实现视频全屏预览呢?在我们使用Premiere时,有时觉得预览视频太小,不太便于观看。小编今天就为你们带来了Premiere实现视频
- 第一企信如何设置头像?第一企信是中国中小企业综合性信息化服务平台。对于新用户来说,很多功能都还不清楚。就比如想要设置第一企信的头像,但是不知
- Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作。今天,小编就教大家在Excel中进行在
- 在word文档中,我们经常需要用到一些数字作为文档编号,但有时为了让文档显得有个性,我们也会给数字加上中括号,具体该如何制作呢?下面就跟小编
- 最近有win10用户反映,点击右键发现没有“图形属性”和“图形选项”,那么如何将这两个选项添加还原呢?本文将提供Win10系统右键菜单没有&
- 才升级Win10的用户多多少少都会遇到一些不兼容的问题,比如显卡不兼容,就非常令人烦躁。Win10系统不兼容驱动怎么办?驱动程序不兼容,那么
- Win7旗舰版安装失败,提示错误代码800706d9怎么办?对于这种情况我们应该如何解决呢?如果你也有同样的困扰,不妨来看看下面这篇小编带来
- 条形统计图可以很直观反映一组数据的权重情况,在公司报表和业绩展示中经常用到,在word文档中怎么制作条形统计图呢?下面小编就为大家详细介绍一