Excel数据表Excel VBA(应用Visual Basic for Application)是一个功能强大的编程工具,与MS Office Suite集成。VBA具有许多构造和方法,可以应用于在Excel工作表中操纵数据(您可以查阅我们的VBA入门教程为了让VBA可以为你做的一切)。VBA中的AutoFilter是一个重要的方法,使您能够过滤工作表和单元格以选择性地选择数据。

今天,我们将带你通过VBA中的自动过滤器。如果您是VBA的新手,我们建议您通过我们的基本Excel VBA教程

AutoFilter适用于列或一组列。它根据给定的标准而过滤数据。autofilter的语法看起来像这样

表达式.Autofilter(现场,条件1,运营商,标准2,visibledropdown)

在哪里

名称

价值

描述

XLAND

1

逻辑和标准1和标准2。

XLbottom10Items.

4.

显示最低值的项目(标准中指定的项目数)。

xlbottom10percent.

6.

显示最低值的项目(标准1中指定的百分比)。

xlfiltercellcolor.

8.

细胞的颜色

xlfilterdynamic.

11.

动态过滤器

xlfilterfontcolor.

9.

字体的颜色

xlfiltericon.

10.

过滤器图标

xlFilterValues

7.

过滤器值

xlOr

2

逻辑或标准1或标准2。

XLTOP10ITEMS.

3.

显示的最高值(标准中指定的项目数)。

xltop10percent.

5.

显示的最高值项(标准a1中指定的百分比)。

现在,您熟悉AutoFilter的概念和语法,让我们继续转移到一些简单实用的练习。随意地请参阅我们的VBA宏课程在任何时候有关更多详细信息。

示例1:关闭所有现有的自动筛选器并创建新的自动筛选器

Sub AutoFilter1() With ActiveSheet . autofiltermode = False . range ("A1:E1")。自动筛选结束与结束Sub

在这个程序中. autofiltermode = false关闭任何现有的自动过滤器。而.Range (A1: E1)。AutoFilter创建一个适用于活动工作表的范围A1:E1的AutoFilter。

从这里开始,我们将引用一个工作表,其标题在A1: D1范围内,数据在A1:D50范围内。标题如下:

EmployeeName| E-age|加入|的日期部门

示例2:使用autofilter匹配单个标准

Sub FilterTo1Criteria() With Sheet1 . autofiltermode = False . range ("A1:D1")。自动筛选.Range (A1: D1)。自动过滤字段:=2,criteria:=40结束与结束Sub

这是一个简单的程序,它提取员工年龄为40岁的行。“字段”值是2,这意味着它指的是第二列,即“E-age”。标准是第2列中的值应该等于40。让我们看看您的程序中可以包含的各种类型的标准。

标准1:=“> = 40”
标准1:=“=”
Criteria1: = " < > "
字段:= 1和标准a1:="=B*"
标准1:=“<> * e *”

例3:使用VBA自动过滤器过滤出两个匹配条件

使用Sheet1 .AutoFilterMode = false .range(“A1:D1”)。AutoFilter .range(“A1:D1”)。自动滤波器字段:= 2,条件1:=“> = 30”,_运算符:=XLAND,标准2:=“<= 40”结束结束子

在这个程序中,我们指定了两个标准。使用的操作员是2个标准的“逻辑和”。因此,只选择这些记录,其中“E-Age”是“> = 30”和“<= 40”。

示例4:在两个不同的字段上使用自动筛选

子Filter2Fields ()使用Sheet1 .AutoFilterMode = false,使用.range(“A1:D1”).AutoFilter .AutoFilter字段:= 1,条件1:=“John”.Autofilter字段:= 4,标准1:=“财务”结束,结束子子

在这个程序中,我们选择了员工名称为“john”、部门为“Finance”的记录。可以添加更多字段;条件是我们不应超过标题的总列数,即四列。

在autofilter中使用日期

MS Excel使用美国日期格式。我们建议您将日期设置更改为此格式。否则您必须使用dateseal()。语法看起来像这样

DateSerial(年、月、日)

让我们看一个使用数据类型Date筛选列的示例。

例5:按日期筛选的程序

Sub FilterDate1() Dim Date1 As Date Dim str_Date As String Dim l_Date As Long Date1 = datesal (2010, 12, 1) l_Date = Date1 Range(“A1”)。自动筛选范围(" A1 ")。自动过滤字段:=1,criteria a1:=">" & l_Date结束子

在此程序中,我们将DATE1声明为类型日期的变量,str_date为type trystry类型的字符串和l_date的变量。dateserial()函数将传递给它传递给我们日期格式的日期。我们使用AutoFilter显示比给定日期更近期的记录(1/12/2010)。

使用时间序列函数和VBA自动过滤器

timeerial()函数返回时间,分钟和秒数。语法看起来像这样

时期(小时,分钟,第二)

让我们仔细看看这些参数,以便更好地理解它们。这三个参数都需要整数数据类型。

时期(17,28,20)将返回下午5:28:20的序列表现。Timeserial()可以与Dateserial()一起使用,以返回VBA程序中的确切时间和日期。

示例5:使用AutoFilter按日期和时间过滤

Sub FilterDateTime() Dim d_Date As Date Dim db_Date As Double If IsDate(Range("B1")) Then db_Date = Range("B1") db_Date = dateseal(年(db_Date),月(db_Date),日(db_Date)) + _ timeseal(小时(db_Date),分钟(db_Date),秒(db_Date)) Range("A1")。自动筛选范围(" A1 ")。自动过滤字段:=1,criteria:=">" & db_Date结束如果结束子

在这个程序中,IsDate()用于查看单元格是否包含可以转换为日期的表达式。然后将单元格的内容赋值给db_Date变量。然后将dateseal()和TimeSerail()合并,并将结果分配给db_Date。我们使用Field 1作为条件来过滤记录,以返回大于db_Date的日期。

Excel VBA是一个令人兴奋的编程区域。它配备了功能和功能来开发简单高效的代码。AutoFilter是Excel VBA编程的核心。利用它提供对数据的不同视图。MrExcel显示了一些整洁的技巧在这个VBA课程,这可以帮助你。一旦您准备好处理更高级的用法,您可以使用我们终极VBA课程

Excel VBA的顶级课程

解锁Excel VBA和Excel宏
Leila Gharani.
4.7 (26951)
畅销书
Microsoft Excel Macros和Excel VBA硕士
凯尔尤
4.5 (11,735)
畅销书
Excel VBA:如何像专业人士一样写宏
保罗凯利
4.6 (1,164)
Excel Macros和VBA为初学者
Bluelime学习方案
4.3 (19)
热和新的
使用Excel VBA完成Web自动化
丹尼尔强
4.8 (741)
畅销书
Excel VBA宏:超消除歧义的Excel VBA编程
格兰特赌博
4.4 (989)
畅销书
具有Access数据库的Ultimate Excel VBA Userform
m·穆斯塔法BOLAT
4.5 (126)
Excel VBA Essentials用于报告自动化
本杰明Termonia
4.6 (186)
终极Excel VBA.
马克塔尔伯特
4.7 (3214)
Excel VBA编程 - 完整指南
鲍里斯Paskhaver
4.7 (3,743)
Microsoft Excel VBA简介
凯尔尤
4.5 (1,161)
Excel Macros&Excel VBA编程为初学者编程
Andreas Exadaktylos
4.5 (860)
评价最高

更多Excel VBA课程

Excel VBA的学生也可以学习

赋予你的团队。引领行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求一个演示