过滤数字字段

时间:2013-12-04 12:47:11

标签: excel vba excel-vba filter

我有以下代码:

ActiveSheet.Range("$A$1:$P$201").AutoFilter Field:=5, Criteria1:="=10"* 

当我点击过滤条件并在搜索栏中输入10*时,我会收到以10开头的所有结果。使用宏时,这不起作用。目标是宏使用我提供的前两个数字进行过滤。

你能帮忙吗?

2 个答案:

答案 0 :(得分:2)

仅当值为文本时,以下内容才会起作用

Sub Macro2()
    ActiveSheet.Range("$A$1:$P$201").AutoFilter Field:=5, Criteria1:="=10*", _
        Operator:=xlAnd
End Sub

如果值不是文本,则使用“帮助”列。

修改#1

对于E栏中的邮政编码,这将过滤掉(隐藏)不包含“10 *”代码的行:

Sub GoingPostal()
    Dim r As Range
    For Each r In Range("E2:E201")
        st = Left(r.Text, 2)
        If st <> "10" Then
            r.EntireRow.Hidden = True
        End If
    Next r
End Sub

答案 1 :(得分:2)

问题的核心似乎是尝试将文本过滤器应用于数字字段。 而不是:

ActiveSheet.Range("$A$1:$P$201").AutoFilter Field:=5 ActiveSheet.Range("$A$1:$P$201").AutoFilter Field:=5, Criteria1:="=10"*

只是:

ActiveSheet.Range("$A$1:$P$201").AutoFilter Field:=5, _  
    Criteria1:=">=10000", Operator:=xlAnd, Criteria2:="<=10999"

似乎有效。