2012-07-30 202 views
1

简单的VBA问题。我需要一个VBA子例程,它将根据条件过滤我的数据(在这种情况下,如果列C中的内容等于11-Jun-12 [数字形式的41071]),而不循环整个数据集。我在网上看了一下过滤,但没有看到任何我想要的东西(或者我只是不明白发生了什么)。需要明确的是,这里有我想要的一个例子:Excel VBA条件筛选器

我想http://imgur.com/qebVv

http://imgur.com/zDncq

谢谢!

+0

为什么不使用自动过滤器?有自定义日期过滤器(日期过滤器的最后一个选项),可选择“不等于”和日期选择器 – 2012-07-30 18:38:28

+0

好吧,我想完全删除这些行。除了循环遍历每一行之外,没有办法做到这一点吗? – jrad 2012-07-30 18:40:28

+0

我不确定。可能不会,但这绝不是100%肯定的答案。 – 2012-07-30 18:42:34

回答

3

假设电子表格设置,因为它出现在你的屏幕截图这里是你可以做什么

Sub DateFilter() 
    'hide dialogs 
    Application.ScreenUpdating = False 
    'filter for records that have June 11, 2012 in column 3 
    ActiveSheet.Cells.AutoFilter Field:=3, Criteria1:="6/11/2012" 
    'deletes all matching rows 
    ActiveSheet.AutoFilter.Range.Delete 
    Application.ScreenUpdating = True 
End Sub 
+0

这工作完美。谢谢! – jrad 2012-07-30 19:29:34

2

杰克·拉德克利夫,

你的意思是一个简单的自动筛选,例如:

Sub SimpleColumnDateFilter1() 

' Quick Recorded Macro 
' Select a Column 
' Activate Autofilter 
' For a range C1 through the rest of C 
' Autofilter such that the column will display dates not equal to 11/15/2012 

Columns("C:C").Select 
Selection.AutoFilter 
ActiveSheet.Range("C:C").AutoFilter Field:=1, Criteria1:= _ 
    "<>11/15/2012", Operator:=xlAnd 
End Sub 
+0

是的,这是我正在尝试做的。但是,这给了我一个错误,我不知道为什么。无论哪种方式,罗斯拉森(我认为)在原来的帖子中为我清理了一些东西。谢谢! – jrad 2012-07-30 18:48:16

+0

杰克,这个基本的例子现在应该有效地运作。我现在只是努力使它更加模块化。 〜JOL – JackOrangeLantern 2012-07-30 18:58:09