excel重复数据筛选(excel重复数据筛选快捷键)

第一在Excel操作的过程中,有时我们需要列出某个字段的数据,我们要把它做成列表,但是我们又不想重复数据,所以需要过滤掉Excel数据表中的重复数据。本节将介绍

第一

在Excel操作的过程中,有时我们需要列出某个字段的数据,我们要把它做成列表,但是我们又不想重复数据,所以需要过滤掉Excel数据表中的重复数据。

本节将介绍如何使用VBA代码来过滤数据列表,然后将过滤后的数据制作成数据验证列表。

Excel:如何筛选重复日期,建立数据验证列表,高级进阶

下图是该部分的一个示例。左侧日期列表中的重要项目被过滤掉,然后在右侧列出,并形成一个数据验证下拉列表。红色日期是最终的完成结果单元格。

Excel:如何筛选重复日期,建立数据验证列表,高级进阶

这样做的目的是选择列中的重复项,并填充下拉列表以进行下拉选择。

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

第二

实例代码

在本例中,代码由三部分组成:

主调用过程 CommandButton1_Click新建数据验证列表函数 addNewValidation()返回数组地址 getCellsArr()Excel:如何筛选重复日期,建立数据验证列表,高级进阶

接下来,各个代码如下:

1.主调用过程

Private Sub CommandButton1_Click()Dim R As rangeSet R = ActiveSheet.range("B3")Call addNewValidation(R, getCellsArr(ActiveSheet, "B"))End Sub

这段代码放在按钮click事件中,当然也可以放在任何事件中,这取决于程序的需要。

主过程调用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是验证列表的地址。我们使用另一个函数来返回这个参数。

Excel:如何筛选重复日期,建立数据验证列表,高级进阶

3.返回过滤日期数据表的地址。

Function getCellsArr(s As Worksheet, cell As String) As String '返回地址On Error Resume Next Dim w As Worksheet Set w = ActiveSheet Dim R As range, Rowi As Long w.UsedRange.Rows.Hidden = False Rowi = w.range(cell & w.Cells.Rows.Count).End(xlUp).Row Set R = w.range(cell & "4:" & cell & Rowi) Dim xR As range, xRArr() As Date, xi As Integer, xA As Variant, isEq As Boolean xi = 0 isEq = False ReDim xRArr(xi) For Each xR In R For Each xA In xRArr If xA = xR.Value Then isEq = True Exit For End If Next xA If Not isEq Then ReDim Preserve xRArr(xi) xRArr(xi) = xR.Value xi = xi + 1 End If isEq = False Next xR s.range("C:C").ClearContents s.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 = Nothing Set w = Nothing getCellsArr = R.Address Set R = Nothing Erase xRArrEnd Function

这个函数在使用中需要做一些小的改动,函数中的一些处理结果会因为不同的数据表存放在不同的位置而不一样。如果是空表,不需要改动,可以直接使用。

看起来代码那么多,但实际上实现的功能最后并不会很复杂,甚至我们根本感觉不到有什么变化,但正是这些细微的变化可以让我们的工作变得更加方便。

欢迎,收藏

-结束-

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/159909.html

发表回复

登录后才能评论