添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首发于 EXCEL VBA

Excel VBA学习笔记05_数据自动筛选(AutoFilter)

Excel VBA使用AutoFilter方法来实现“筛选”功能,并提供了一系列可选的参数来进一步执行筛选操作。
AutoFilter方法的语法及说明
下面是Range对象的AutoFilter方法的语法:
Range对象 . AutoFilter (Field,Criterial1,Operator,Criteria2,VisibleDropDown)

AutoFilter参数:

1.参数Field,指定想要基于筛选的字段的整数偏移量。从列表的左侧算起,最左侧的字段是字段一。

2.参数Criteria1 指定判断条件(为字符串)。使用“=”查找空字段,或者使用“<>”查找非空字段。如果忽略该参数,那么判断是全部。如果参数Operator是xlTop10Items,那么参数Criterial1指定项目的数量;

3.参数Operator 指定筛选的类型

4.参数Criteria2,指定第二个判断条件(字符串),使用Criterial1和Operator构建复合判断条件。
5.参数VisibleDropDown,设置为True则显示所筛选字段的自动筛选下拉箭头;设置为False则隐藏所筛选字段的自动筛选下拉箭头。默认为True。
6.如果忽略所有参数,那么AutoFilter方法简单地切换指定区域的自动筛选下拉箭头的显示。
示例1:

'筛选2020年夏天的数据:

range("e1").autofilter2,"夏"

range("e1").autofilter1,"2020"

'筛选大于300并且小于400的值: Range("e1").AutoFilter 4, ">300", xlAnd, "<400"

'筛选春和夏:Range("e1").AutoFilter 2, "春", xlOr, "夏"

'筛选最大前5:Range("e1").AutoFilter 4, 5, xlTop10Items

'筛选最小后3:Range("e1").AutoFilter 4, 3, xlBottom10Items

'筛选最大前30%:Range("e1").AutoFilter 4, 30, xlTop10Percent

'筛选最大前20%:Range("e1").AutoFilter 4, 20, xlBottom10Percent

'筛选"春", "夏", "秋":Range("d1").AutoFilter 2, Array("春", "夏", "秋"), xlFilterValues

'筛选单元底色为黄色:Range("d1").AutoFilter 4, RGB(255, 255, 0), xlFilterCellColor

'筛选单元格底色为红色:Range("d1").AutoFilter 4, RGB(255, 0, 0), xlFilterCellColor

'筛选红色字体颜色:Range("d1").AutoFilter 4, RGB(255, 0, 0), xlFilterFontColor

'筛选图标:Range("d1").AutoFilter Field:=4, Criteria1:=ActiveWorkbook.IconSets(xl3Arrows).Item( 1 ), Operator:=xlFilterIcon

'筛选大于平均值的值:Range("d1").AutoFilter 4, xlFilterAboveAverage, xlFilterDynamic

'筛选所有1月的日期":Range("d1").AutoFilter 5, xlFilterAllDatesInPeriodJanuary, xlFilterDynamic

'y = Range("G5").Interior.Color

'red = y Mod 256

'gre = y \ 256 Mod 256

'blu = y \ 256 ^ 2 Mod 256

'MsgBox "RGB(" & red & "," & gre & "," & blu & ")"

示例2:删除筛选出的数据
首先可以使用AutoFilter方法筛选出这些行,然后进行删除。代码如下:
Sub testAutoFilter4()
Dim rng As Range
'如果开启了筛选模式则关闭该模式
ActiveSheet.AutoFilterMode = False
'设置筛选区域

Set rng = Range("A1:B10")
'筛选列A中内容为0的单元
rng.AutoFilter Field:=1,Criteria1:="0"
'删除筛选出来的行
With rng
.Offset(1).Resize(.Rows.Count -1).SpecialCells(xlCellTypeVisible).Delete Shift:=xlShiftUp
'关闭筛选模式
.Worksheet.AutoFilterMode = False
End With
End Sub

示例3:取消筛选
sht.Sheets("temp1").AutoFilterMode = False '取消筛选状态

If ActiveSheet.AutoFilterMode = True Then '判断,并取消筛选状态

ActiveSheet.AutoFilterMode = False

End if

示例4:高级筛选获得不重复记录

Sheets("Original").Range("a:aj").AdvancedFilter Action:=xlFilterCopy, unique:=True, CopytoRange:=sh.Sheets("Close(M)").Range("a1")

编辑于 2023-02-26 20:57 ・IP 属地广东

文章被以下专栏收录

    EXCEL VBA

    当别人给与不了,那就只能自己争取