使用vba和过滤器excel搜索引擎?

时间:2015-06-22 15:14:46

标签: excel vba

我正在使用以下vba代码根据我的单元格C5中的值过滤excel中的行

Sub DateFilter()
    'hide dialogs
    Application.ScreenUpdating = False
    'filter for records that have June 11, 2012 in column 3
    ActiveSheet.Range("C10:AS30").AutoFilter Field:=1, Criteria1:="*" & ActiveSheet.Range("C5").Value & "*"
    Application.ScreenUpdating = True
End Sub

我的excel列看起来像:

A            B          C             
Gold         XXX        Manchester
Silver       TTT        London
Black        ZZZ        Scotland
White        WWW        Wales

因此,如果我在单元格C5中输入单词'Gold'并运行宏,我的行将被过滤,只会显示以下内容:

Gold        XXX       Manchester

但是,现在我希望能够通过将a,b或c列中的值放入我的单元格c5并过滤行来过滤我的行。

因此,如果我在单元格c5中输入字母'TTT',这将过滤我的行:

Silver       TTT       London

如果我输入威尔士进入单元格c5它会过滤我的行:

White      WWW    Wales

我想要做的另一件事是能够根据多个搜索条件过滤我的行,所以如果我在我的单元格c5中放置a,b和c列的值的组合,如下所示:

White  WWW Wales 

然后我最终得到以下过滤结果:

White      WWW       Wales 

有人可以告诉我我将如何做到这一点?提前致谢

1 个答案:

答案 0 :(得分:0)

为了过滤“any”列,您可以像这样组合查找结果和过滤器:

Sub DateFilter()
Dim nRow As Range
Dim toSearch As Range
    'hide dialogs
    Application.ScreenUpdating = False
    'filter for records that have June 11, 2012 in column 3

    Set toSearch = Range("A1:C4")
    'detect row that matches criteria:
    Set nRow = toSearch.Find(ActiveSheet.Range("C5").Value)
    If Not (nRow Is Nothing) Then
        ActiveSheet.Range("C1:A4").AutoFilter Field:=nRow.Column, Criteria1:="*" & nRow.Value & "*"
    End If
    Application.ScreenUpdating = True
End Sub

我尝试使用粘贴在A1到C4中的值,使用C5作为搜索文本单元格。你必须调整这些值,但除此之外你应该没事。

对于您的上一次查询,“White WWW Wales”我建议在omegastripes建议在AA列左右的某个地方添加一个附加的连接单元格。