2012-10-18 112 views
0

我的代码如下所示。我第一次过滤,它工作正常。但是第二次,它没有。过滤的列包含年。VBA筛选年份

For i = 1 To LastRow 
    If wSheet.Range("A1").Offset(i, 0) <> wSheet.Range("A1").Offset(i + 1, 0) Then 
     WellName = wSheet.Range("A1").Offset(i, 0) 
     Set rng = wSheet.Range("A1", Cells(LastRow, LastColumn)) 
     rng.AutoFilter Field:=1, Criteria1:=Name 
     L_top = wSheet.Range("A2:A" & LastRow).SpecialCells(xlCellTypeVisible).Row 
     L_bot = wSheet.Range("A2:A" & LastRow).SpecialCells(xlCellTypeVisible).Count 
     LastRowFilter = wSheet.Range("A1").End(xlDown).Row 
     LastColumnFilter = wSheet.UsedRange.Columns.Count 

     For j = 1 To LastRowFilter 
      If Year(wSheet.Range("B1").Offset(j, 0)) <> Year(wSheet.Range("B1").Offset(j + 1, 0)) Then 
       ReportYear = Year(wSheet.Range("B1").Offset(j, 0)) 
       Set rng2 = wSheet.Range("B1", Cells(LastRowFilter, LastColumnFilter)) 
       rng2.AutoFilter Field:=2, Criteria2:=ReportYear 
       L_top = wSheet.Range("B2:B" & LastRowFilter).SpecialCells(xlCellTypeVisible).Row 
       L_bot = wSheet.Range("B2:B" & LastRowFilter).SpecialCells(xlCellTypeVisible).Count 

      End If 
     Next 

    End If 
Next 
+0

你得到的错误是什么? – RocketDonkey

+0

实际上不是一个错误。但它似乎隐藏了任何东西。第一次过滤是成功的,但是当我做第二次时它会隐藏任何东西。 thx –

+0

有没有办法做到这一点?我已经尝试录制宏,但它仍然不起作用 –

回答

1

看来,你的问题是你的第二个过滤器(好像初始过滤器应引起和错误,但如果它不破不解决它:))。问题是与以下几行:

ReportYear = Year(wSheet.Range("B1").Offset(j, 0)) 
Set rng2 = wSheet.Range("B1", Cells(LastRowFilter, LastColumnFilter)) 
rng2.AutoFilter Field:=2, Criteria2:=ReportYear 

要设置ReportYear等于要筛选上(有意义)的一年,但你试图对等于当年值进行过滤。这似乎在逻辑上合理,但请记住,该列包含日期,而不是年份。不知道什么对你的代码(所以道歉的任何其他错误),这似乎对我的简单的测试工作:

ReportYear = Year(wSheet.Range("B1").Offset(j, 0)) 
Set rng2 = wSheet.Range("B1", Cells(LastRowFilter, LastColumnFilter)) 
rng2.AutoFilter Field:=2, Criteria1:= ">=" & DateSerial(ReportYear, 1, 1), _ 
       Operator:=xlAnd, Criteria2:="<=" & DateSerial(ReportYear, 12, 31) 

,它使用了ReportYear价值,但变成过滤器进入表“显示我之间的所有日期1月1日和12月31日的ReportYear“。我同意这看起来有点不雅(我敢肯定,这里的一位大师有一个更短的解决方案),但它可能适用于你的情况。

+0

太好了。我首先尝试 –

+0

@ mr.lumpy听起来不错 - 如果不能解决问题,很乐意帮助排除故障。 – RocketDonkey