2016-11-17 68 views
0

我在另一个关于自动过滤器的问题上被bobajob巨大的帮助。不过,我需要稍微复杂一点。以下代码允许用户在excel中搜索产品的小数据表并将其自动过滤。它出色地工作(再次感谢bobajob !!),但我需要通过添加日期搜索功能使其稍微复杂化。该文件涉及一些产品,日期涉及生产日期,到期日期等。原始搜索功能允许搜索某个品牌,它在哪里生成,以及序列号码......但现在我必须添加在两个日期之间生产这些物品时拉起的能力,但仍然保留其制造位置的搜索标准等。将日期过滤器搜索添加到当前的自动过滤器VBA行

是通过修改以下代码来完成此操作的最佳方法吗?或者添加一个单独的模块?那仍然可以链接两个领域,等等?

Sub FilterTo1Criteria() 
    Dim i As Long 
    With Sheet1 
     .AutoFilterMode = False 
     .Range("A9:J1018").AutoFilter 
     For i = 1 To 10 
      If .Cells(3, i) <> vbNullString Then 
       .Range("A9:J1018").AutoFilter Field:=i, Criteria1:=.Cells(3, i) 
      End If 
     Next i 
    End With 
End Sub 

在此先感谢!

回答

0

鉴于我对原件很熟悉,我也会去参加这一次。下面将测试行3(第一条件),看看它是否是一个日期,如果是将使用第3行和第4行,以限定日期的范围要筛选:

Sub FilterTo1Criteria() 
    Dim i As Long 
    With Sheet1 
     .AutoFilterMode = False 
     .Range("A9:J1018").AutoFilter 
     For i = 1 To 10 
      If .Cells(3, i) <> vbNullString Then 
       If IsDate(.Cells(3, i)) Then 
        .Range("A9:J1018").AutoFilter Field:=i, Criteria1:=">=" & CLng(.Cells(3, i)), Criteria2:="<=" & CLng(.Cells(4, i)) 
       Else 
        .Range("A9:J1018").AutoFilter Field:=i, Criteria1:=.Cells(3, i) 
       End If 
      End If 
     Next i 
    End With 
End Sub 

注我转换首先约会,这应该有希望摆脱日期本地化的任何含糊不清。

+0

是!这工作。我修改了工作表更改功能以包含它下面的字段,它的功能就像一个魅力!非常机智的先生! – thegreataus

+0

很高兴我能帮到你。如果我的答案解决了你的问题,你会介意接受他们吗? – bobajob

+0

已接受的先生!再次感谢!! – thegreataus