【问题标题】:Filter numeric field过滤数字字段
【发布时间】:2013-12-20 23:11:20
【问题描述】:

我有以下代码:

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

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

你能帮忙吗?

【问题讨论】:

  • 我试过这个,但不是执行 ,,begins with search'' 它会自动选择整个数字,例如我搜索“10*”和脚本记录,记录 : ,,Criteria1:= “10439”; Criteria2:="10943" 等
  • "01* 是一个错字,我正在另一台电脑上编写代码,没有 Internet 连接。我使用了下面由 Gary 的学生编写的代码。问题是我的号码是邮政编码格式,而不是文本。
  • 德国邮政编码 : ,,10965" ,,25541" ,,10965" ,,01127" 等
  • 是的,这行得通,谢谢!

标签: vba excel filter


【解决方案1】:

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

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"

似乎奏效了。

【讨论】:

    【解决方案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
    

    【讨论】:

    • 嗨 pnuts:有时 AutoFilter 对数字/文本感到困惑........你的建议是一个很好的建议。
    • 嗨,这些值是邮政编码格式。我认为这就是它不起作用的原因。你的帮助栏是什么意思?谢谢!
    猜你喜欢
    • 2017-01-31
    • 2014-08-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2018-08-19
    • 2020-06-28
    • 2016-06-15
    • 2021-06-19
    相关资源
    最近更新 更多