打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel之VBA常用功能应用篇:筛选重复日期,建立数据验证列表,高级进阶

No.1

Excel操作过程当中,有时我们需要把某一个字段的数据进行列表处理,也就要做成列表,但是又不想数据重复,这就需要把Excel 数据表中重复的数据进行筛选。

本节就介绍一下,如何利用VBA代码来进行数据列表筛选,然后将筛选出的数据制作成数据验证列表。

下图为本节示例,将左侧日期列表中有重要项的筛选过滤掉,然后在右侧列出,制作成一个数据验证下拉列表,红色日期就是最终完成结果单元格。

做这个的目的就是在一列中,把重复项目选出来,为下拉列表进行填充,以供使用下拉选择。

在一些选择框中,会经常用到,所以这个取重复项目还是很有用的。

No.2

实例代码

本例中,代码包括三个部分:

主调用过程 CommandButton1_Click新建数据验证列表函数 addNewValidation()返回数组地址 getCellsArr()

接下来,分别代码如下:

1、主调用过程

Private Sub CommandButton1_Click()

Dim R As range

Set R = ActiveSheet.range("B3")

Call addNewValidation(R, getCellsArr(ActiveSheet, "B"))

End Sub

这个代码放到按钮单击事件里,当然可以放到任何事件当中,主要看程序的需要。

主过程调用的是函数addNewValidation()函数,其有两个参数,要设置正确,一个是日期列工作表,另一个是工作表列名。

2、新建数据验证列表函数 addNewValidation()

Sub addNewValidation(RangeAddr As range, cellsAddress As String)'新建数据验证列表    With RangeAddr.Validation        .Delete        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _        Operator:=xlBetween, Formula1:="=" & cellsAddress        .IgnoreBlank = True        .InCellDropdown = True        .InputTitle = ""        .ErrorTitle = ""        .InputMessage = ""        .ErrorMessage = ""        .IMEMode = xlIMEModeNoControl        .ShowInput = True        .ShowError = True    End WithEnd Sub

addNewValidation()函数实现新建一个数据验证列,两个参数,RangeAddr为新建验证的单元格,cellsAddress为验证列表的地址,这个参数我们使用另一个函数返回。

3、返回筛选后日期数据表地址

Function getCellsArr(s As Worksheet, cell As String) As String '返回地址On Error Resume NextDim w As WorksheetSet w = ActiveSheetDim R As range, Rowi As Longw.UsedRange.Rows.Hidden = FalseRowi = w.range(cell & w.Cells.Rows.Count).End(xlUp).RowSet R = w.range(cell & "4:" & cell & Rowi)Dim xR As range, xRArr() As Date, xi As Integer, xA As Variant, isEq As Booleanxi = 0isEq = FalseReDim xRArr(xi)For Each xR In RFor Each xA In xRArrIf xA = xR.Value ThenisEq = TrueExit ForEnd IfNext xAIf Not isEq ThenReDim Preserve xRArr(xi)xRArr(xi) = xR.Valuexi = xi + 1End IfisEq = FalseNext xRs.range("C:C").ClearContentss.range("C4").Value = "搜索日期"Set R = s.range("C5:C" & UBound(xRArr) + 5)R.Value = Application.WorksheetFunction.Transpose(xRArr)R.Interior.Color = QBColor(11)Set s = NothingSet w = NothinggetCellsArr = R.AddressSet R = NothingErase xRArrEnd Function

本函数在使用过程中需要一些微小改动,由于不同的数据表保存位置不同所以函数中的一些处理结果也不会相同。如果是一张空表,也就不用更改,可以直接使用。

看上去这么多代码,其实实现的功能最终并不会显得十分复杂,甚至根本感觉不到发生了什么变化,但就是这些微小的变化,可以使我们的工作更加便捷。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
财务人员必学的几个函数(二)
EXCEL利用函数和辅助列筛选去除重复数据 保留最后出现的行
视频号(时间数据函数)XI
excel数据对比(查找重复数据)
Excel如何筛选重复数据?简单有效的四个方法
跟李锐学Excel:COUNTIF函数判断重复数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服