VBA自动筛选|如何使用VBA自动筛选条件筛选数据?

Excel VBA自动筛选

VBA中的自动筛选器用作表达式,其语法如下表达式。 Autofilter(字段,条件1,运算符,条件2,下拉菜单)的所有参数都是可选的。该过滤器有助于从海量数据中过滤特定数据。

如果您是普通用户,那么excel过滤器对您来说并不是一件奇怪的事情。我们在工作表中使用的某些工具也已集成到VBA中,并且自动筛选选项是VBA中可用的重要工具之一。众所周知,“数据”标签下提供了excel过滤器。

使用此过滤器选项,我们可以处理数据。如果您处理的数据量很少,并且您认为确实不需要VBA自动过滤器选项,则可以继续使用工作表过滤器选项。

如果您处理大量数据,则可以使用“自动筛选”选项来简化处理流程。

自动筛选功能的语法

Excel VBA中的自动筛选可以与范围对象一起使用。像我们的其他功能一样,它也有自己的语法。

  • 范围: 范围就是您要应用过滤器的范围。
  • 场地: 字段表示您要从范围的哪一列中选择要过滤出的数据。一列将从左到右计数。

例如,如果您的范围是从A1到D100,并且您想为D列应用过滤器,则您的字段号是4,因为在所选范围中D是第四列。

准则1: 在该字段中,您选择了要过滤的内容。

  • 操作员: 如果要应用多个标准过滤数据,则需要使用运算符。一些操作员代码如下。

xlAnd,xlOr,xlBottom10Items,xlTop10Items,xlTop10Percent,xlBottom10Percent,xlFilterCellColor,xlFilterDynamic,xlFilterFontColor,xlFilterIcon和xlFilterValues。

准则2: 您要与条件1一起过滤的第二件事是什么?

  • 可见的下拉列表: 是否要在过滤列中向下显示过滤器框的图标。如果要显示TRUE,则为FALSE,否则为FALSE。

如何使用VBA自动筛选应用筛选器? (带有示例)

您可以在此处下载此VBA自动筛选模板– VBA自动筛选模板

在下面假设您正在处理的数据。

现在,通过使用VBA代码,我们将应用过滤器。请按照以下步骤应用过滤器。

步骤1: 通过给宏命名来启动子过程。

代码:

 子AutoFilter_Example1()结束子 

步骤2:第一个 问题是我们需要在什么范围内应用过滤器。在这种情况下,我们需要应用范围从A1到E25的范围。

代码:

 Sub AutoFilter_Example1()范围(“ A1:E25”)结束Sub 

第三步: 选择范围后,现在应用自动过滤选项。

代码:

 Sub AutoFilter_Example1()Range(“ A1:E25”)。AutoFilter End Sub 

我们不会使用自动过滤器来选择任何值,而只是在此时应用过滤器。

使用F5键运行代码,或手动运行,它将为所选范围插入过滤器。

因此,它已对数据应用了过滤器。现在,我们将看到如何过滤数据。

Example#1 –使用自动过滤器过滤掉数据

考虑上面示例中的相同数据。现在我们需要从“部门”列中过滤掉“财务”部门。

步骤1: 应用过滤器后,第一个参数是要提到我们要从哪一列过滤数据。在这种情况下,我们需要过滤“部门”列中的数据,因此列号为5。

代码:

 Sub AutoFilter_Example1()范围(“ A1:E25”)。AutoFilter字段:= 5,结束Sub 

第2步: 条件1只是我们要从第5列中过滤的内容。因此,我们需要过滤掉“财务”。

代码:

 Sub AutoFilter_Example1()Range(“ A1:E25”)。AutoFilter字段:= 5,Criteria1:=“ Finance” End Sub 

如此一来,手动运行此代码或通过F5键,它将仅从列表中过滤掉“财务”。

Example#2 –自动过滤器中的运算符

我们已经看到了如何过滤单个值。现在,我们将看到如何过滤多个元素。假设您也想与“财务”一起过滤“销售”部门,所以我们可以通过使用 运营商。

步骤1: 在下一个参数中应用第一个条件后,将运算符选择为“ xlOr”。

代码:

 Sub AutoFilter_Example2()Range(“ A1:E25”)。AutoFilter字段:= 5,Criteria1:=“ Finance”,运算符:= xlOr End Sub 

第2步: 现在在 准则2 将该值称为“销售”。

代码:

 Sub AutoFilter_Example2()Range(“ A1:E25”)。AutoFilter字段:= 5,Criteria1:=“ Finance”,运算符:= xlOr,Criteria2:=“ Sales” End Sub 

第三步: 好的,使用F5键或手动运行此代码,它将过滤掉“财务”和“销售”。

在运算符参数中,我使用了 “ xlOr” 这将同时选择 “财务”和“销售” 在过滤器下。

Example#3 –使用自动过滤器过滤编号

使用运算符“ XlAnd”,我们也可以过滤出数字。假设您要从“超时”列中过滤掉所有大于1000但小于3000的值。

步骤1:第一个 事情是将字段从5更改为4。

代码:

 Sub AutoFilter_Example3()Range(“ A1:E25”)。AutoFilter字段:= 4 End Sub 

步骤2:条件1 > 1000。

代码:

 Sub AutoFilter_Example3()范围(“ A1:E25”)。AutoFilter字段:= 4,Criteria1:=“> 1000”,结束 

第三步: 在这里,我们需要同时匹配这两个条件,因此请使用“ xlAnd”作为运算符。

代码:

 Sub AutoFilter_Example3()Range(“ A1:E25”)。AutoFilter字段:= 4,Criteria1:=“> 1000”,运算符:= xlAnd,结束子 

第4步: 条件2将<3000。

代码:

 Sub AutoFilter_Example3()Range(“ A1:E25”)。AutoFilter字段:= 4,Criteria1:=“> 1000”,运算符:= xlAnd,Criteria2:=“ <3000” 

现在,如果您手动或通过F5键运行此代码,它将从“超时”列中过滤掉所有大于1000但小于3000的值。

Example#4 –使用自动过滤器从不同的列过滤

为了从不同的列中筛选出数据,我们需要使用不同的过程。假设您要过滤掉“财务”部门,并且还想过滤出> 25000但<40000的薪水数字。

您可以使用下面的代码来做到这一点。

代码:

 带有范围(“ A1:E25”)的Sub AutoFilter_Example4()。自动过滤字段:= 5,标准1:=“财务”。自动过滤字段:= 2,标准1:=“> 25000”,运算符:= xlAnd,标准2:=“ <40000“结束,结束子 

这将滤除两列。

使用F5键运行此代码,也可以手动运行。

要记住的事情

  • 尝试在“运算符”下尝试不同的组合,以获取VBA自动筛选的知识。
  • 如果您不确定要放入什么内容,请尝试使用宏录制器。
  • 如果要过滤出文本值,则需要在双引号中提供它们。
  • 使用WITH语句可应用多个列过滤器。