Excel VBA自动滤波器:如何使用过滤器来突出显示您的数据
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)
在哪里
- 字段 - 它是包含过滤器的字段的整数偏移量。数据类型是变体,这意味着它可以包含任何数据类型 - 整数,字符串,日期等。
- 标准1-它是一个基于哪个列的条件。
- 操作员 - 它指定过滤器的类型。常用在Excel VBA编程中常用的一些运算符在下面列出。
名称 |
价值 |
描述 |
XLAND |
1 |
逻辑和标准1和标准2。 |
XLbottom10Items. |
4. |
显示最低值的项目(标准中指定的项目数)。 |
xlbottom10percent. |
6. |
显示的最低值项(标准a1中指定的百分比)。 |
xlfiltercellcolor. |
8. |
细胞的颜色 |
xlfilterdynamic. |
11. |
动态过滤器 |
xlFilterFontColor |
9. |
字体的颜色 |
xlFilterIcon |
10. |
过滤器图标 |
xlfiltervalues. |
7. |
过滤器值 |
Xlor. |
2 |
标准1或标准2的逻辑或。 |
XLTOP10ITEMS. |
3. |
显示的最高值(标准中指定的项目数)。 |
xltop10percent. |
5. |
显示最高值的项目(条件1中指定的百分比)。 |
- 标准2-这是基于哪个列的辅助条件。它与标准1和操作员结合起来创建复合标准。
- visiblebledropdown-默认情况下是真的。它是数据类型变体。如果是真的,则会显示过滤字段的自动滤波器DropDropdown箭头。如果为false,则隐藏DropDopdown箭头。
现在,您熟悉AutoFilter的概念和语法,让我们继续转移到一些简单实用的练习。随意地请参阅我们的VBA宏课程在任何时候有关更多详细信息。
示例1:关闭所有现有的自动过滤器并创建新的自动变频器
sub autofilter1()使用ActiveSheet .AutoFilterMode = false .range(“A1:E1”)。自动滤波结束
在此程序中.AutoFilterMode = False关闭任何现有的自动过滤器。而.Range(“A1:E1”)。自动滤波器创建一个自动滤波器,可应用于Active工作表的范围A1:E1。
从这里开始,我们将引用一个工作表,该工作表在A1:D1和A1:D50范围内的数据范围内具有标题。标题如下:
雇佣寿命|E-Age |加入日期|部门
示例2:使用autofilter匹配单个标准
sub filterto1criTeria()使用Sheet1 .AutoFilterMode = false .range(“A1:D1”)。自动滤波器.Range(“A1:D1”)。自动滤波器字段:= 2,标准1:= 40以结束子分配
这是一个简单的程序,提取员工年龄为40的行。“场”值为2,这意味着它是指“E-Age”的第二列。标准是第2列中的值应该等于40.让我们看一下您可以在程序中包含的各种类型的标准。
- 对于E-Age为40或更多的情况,您可以使用以下代码
标准1:=“> = 40”
- 如果要显示e-age为空白的行,则代码如下所示
标准1:=“=”
- 显示我们使用的所有非空白
标准1:=“<>”
- 如果要在“员工名称”字段中以字母“B”以字母“B”滤除名称,那么您必须分配
字段:= 1和标准1:=“= B *”
- 要在第一个列中显示不包含字母“e”的列中的所有名称,请使用代码
标准1:=“<> * e *”
- 如果要隐藏过滤器箭头然后设置visibledropdown:= false。这是标准1之后的下一个参数
示例3:使用VBA AutoFilter过滤掉两个匹配标准
使用Sheet1 .AutoFilterMode = false .range(“A1:D1”)。AutoFilter .range(“A1:D1”)。自动滤波器字段:= 2,条件1:=“> = 30”,_运算符:=XLAND,标准2:=“<= 40”结束结束子
在这个程序中,我们指定了两个标准。使用的操作员是2个标准的“逻辑和”。因此,只选择这些记录,其中“E-Age”是“> = 30”和“<= 40”。
示例4:在两个不同的字段上使用autofilter
sub filter2fields()使用Sheet1 .AutoFilterMode = false,使用.range(“A1:D1”).AutoFilter .AutoFilter字段:= 1,条件1:=“John”.Autofilter字段:= 4,标准1:=“财务”结束,结束子子
在这个计划中,我们选择了员工姓名是“John”的记录,其部门是“财务”。可以添加更多字段;作为我们的条件不应超过标题的总柱数,即四个。
在autofilter中使用日期
MS Excel使用美国日期格式。我们建议您将日期设置更改为此格式。否则您必须使用dateserial()。语法看起来像这样
Dateserial(年,月,日)
让我们来看看一个使用数据类型日期来过滤列的示例。
示例5:按日期过滤的程序
子FilterDate1()暗淡DEAD1作为日期DIM str_date作为字符串暗淡l_date作为long date1 = dateserial(2010,12,120,4)l_date = date1范围(“a1”)。自动滤波器范围(“a1”)。自动滤波器字段:= 1,标准1:=“>”&l_date结束子
在这个程序中,我们声明Date1为date类型的变量,str_Date为string类型的变量,l_Date为long类型的变量。函数的作用是:将传递给它的日期转换为美国日期格式。我们使用Autofilter来显示比给定日期(1/12/2010)更近的记录。
使用Timeerial函数以及VBA AutoFilter
timeerial()函数返回时间,分钟和秒数。语法看起来像这样
时期(小时,分钟,第二)
让我们仔细看看参数以更好地了解它们。所有三个参数都需要整数数据类型。
- 小时:0到23之间的任何数字包括或数字表达式。
- 分钟:任何数字表达式。
- 第二:任何数字表达式。
时期(17,28,20)将返回下午5:28:20的序列表现。Timeserial()可以与Dateserial()一起使用,以返回VBA程序中的确切时间和日期。
例5:使用自动筛选按日期和时间进行筛选
子FilterDateTeme()将DIM D_DATE为DAME DF DB_DATE作为DOUPT DF DB_DATE IF ISDATE(范围(“b1”))然后db_date = srount(“b1”)db_date = dateserial(年(db_date),月(db_date),日(db_date))+ _倍增(小时(db_date),分钟(db_date),第二(db_date))范围(“a1”)。自动滤波器范围(“a1”)。自动滤波器字段:= 1,条件1:=“>”&db_date结束结束子
在此程序中,ISDate()用于了解单元格是否包含可以转换为日期的表达式。然后将单元格的内容分配给DB_Date变量。结合了下一个DateSerial()和Timeerail(),结果分配给db_date。我们使用字段1过滤记录作为标准以返回大于db_date的日期。
Excel VBA是一个令人兴奋的编程区域。它配备了功能和功能来开发简单高效的代码。AutoFilter是Excel VBA编程的核心。利用它提供对数据的不同视图。MREXCEL在这个VBA课程中显示了一些整洁的技巧,这可以帮助你。一旦您准备好解决更高级的使用,您可以这样做我们的终极VBA课程。