在同一字段上使用通配符的空白和数字的多个过滤条件不起作用

2023-12-10

尽管关于这个主题的问题很多,但我一直无法找到问题的解决方案(这可能是也可能不是我的错)。

我需要自动过滤一个范围以返回空格和以 614 开头的数字。

该列已使用以下内容进行预格式化:

Range("B:C").NumberFormat = "###0"

这是为了删除 Excel 想要在某些数字上使用的科学记数格式。

然后我使用以下内容来应用过滤器:

With ActiveSheet
    .AutoFilterMode = False 'remove any active filters
    .Range("A1:O1").AutoFilter Field:=2, Criteria1:="614*", Operator:=xlOr, Criteria2:="="
End With

无论我如何应用过滤器,包括使用数组,过滤器都只返回空白值。我还使用 Criteria1:="=614*" 获得相同的结果。

我唯一确定的是这个数字将以 614 开头,并且后面会有各种组合。

是数据类型的问题吗?空格是字符串,数字是数字吗?只有一个博客稍微解决了这个问题,并且似乎表明我在这种情况下不能使用通配符。它是否正确?

这些号码本质上是澳大利亚手机号码,因此长度为 11 个字符,其中只有前 3 个字符是常量。这就是为什么我真的想使用通配符来查找这些记录。我需要从数据集中消除这些加上空白。根据您的回复以及我基本上开始意识到,如果我想将其作为一步过程来完成,我唯一的选择是将数字转换为字符串。这会影响后面的代码。我假设这不能作为自动过滤器标准的一部分来完成(一厢情愿的想法)?


每当您遇到使用该功能的限制时Range.AutoFilter方法,只需使用 VBA 的文本、数字和/或日期操作构建匹配条件的字典,并将字典的键作为数组应用于自动筛选操作。

Sub wildcard_Number_Filter()
    Dim a As Long, aTMPs As Variant, dVALs As Object

    Set dVALs = CreateObject("Scripting.Dictionary")
    dVALs.CompareMode = vbTextCompare

    With Worksheets("Sheet1")
        If .AutoFilterMode Then .AutoFilterMode = False
        With .Cells(1, 1).CurrentRegion
            'build a dictionary so the keys can be used as the array filter
            aTMPs = .Columns(2).Cells.Value2
            For a = LBound(aTMPs, 1) + 1 To UBound(aTMPs, 1)
                Select Case True
                    Case Not CBool(Len(aTMPs(a, 1)))
                        dVALs.Item(Chr(61)) = Chr(61)   'blanks
                    Case CStr(aTMPs(a, 1)) Like "614*"
                        'The set of numbers have to be strings in the array
                        If Not dVALs.Exists(aTMPs(a, 1)) Then _
                            dVALs.Add Key:=CStr(aTMPs(a, 1)), Item:=aTMPs(a, 1)
                    Case Else
                        'no match. do nothing
                End Select
            Next a

            'test the array
            'Dim k As Variant
            'For Each k In dVALs.Keys
            '    Debug.Print k & " - " & dVALs.Item(k)
            'Next k

            'filter on column B if dictionary keys exist
            If CBool(dVALs.Count) Then _
                .AutoFilter Field:=2, Criteria1:=dVALs.Keys, _
                                      Operator:=xlFilterValues, VisibleDropDown:=False

            'data is filtered on 614* and blanks (column B)
            'Perform work on filtered data here

        End With
        If .AutoFilterMode Then .AutoFilterMode = False
    End With

    dVALs.RemoveAll: Set dVALs = Nothing
End Sub

通过使用此方法,您可以对值执行任何操作,通过标准 VBA 方法检查它们是否包含或排除,都可以生成一个有效的数组来用作过滤器集。通过将工作表中的值批量加载到变体数组中,读取和评估单个单元格的时间几乎不存在。

        number_Wildcards_Filter_before
            Before building and applying filter

        number_Wildcards_Filter_after
            After applying filter

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一字段上使用通配符的空白和数字的多个过滤条件不起作用 的相关文章

随机推荐

  • Woocommerce 单一产品自定义选项卡上显示带有所见即所得字段的元框

    需要在单个产品页面上显示相关产品中的自定义字段 我想添加一个元框到Add New Product字段并在评论下的单个产品页面上的自定义选项卡上显示结果 我尝试使用代码 但页面上没有显示任何内容 添加额外的产品选项卡可以帮助我添加额外的信息
  • MS Word Viewer C# .NET 自动化

    是否可以自动化执行以下操作 引用 MS Word Viewer 以编程方式打开文档然后打印它 理想情况下是 C 我猜如果可以打开它 那么很可能可以打印它 我尝试在 Visual Studio 中添加对 COM 对象的引用 MS Office
  • 如何根据“收件人”电子邮件地址在 VBA 中过滤 Outlook 视图

    我在 Outlook 中有一个视图 其中包含邮箱中的 发件人 和 收件人 电子邮件 我可以非常轻松地在 Outlook 搜索框中输入电子邮件地址 视图将立即被过滤以显示来自该电子邮件地址的所有电子邮件 也许还包括主题或正文中包含此电子邮件地
  • 获取客户端的IP地址和计算机名称?

    我有一个 ASP Net 4 0 应用程序 发布在公司 Intranet 网络的 IIS 7 0 服务器上 我想将客户端的 IP 地址保存在我的数据库中 所以我想获取客户端的IP地址和计算机名称 我尝试了互联网搜索的方法 但我得到 服务器
  • 如何从ng-grid获取单元格值

    我是 AngularJS 的初学者 我研究了ng grid的demo 有一个问题 索引 html
  • Rails 3:a​​lias_method_chain 仍然使用吗?

    我刚刚读到有关 Rails 3 的 Gems Plugin 开发的内容 然后遇到了这个帖子这表示不再使用 alias method chain 我可以看到该方法仍然存在于 activesupport 3 0 0 lib active sup
  • 使用smack重新连接到xmpp服务器

    我正在尝试开发一个聊天应用程序 当互联网稳定时一切正常 就像我可以发送和接收消息一样 但是当互联网关闭一段时间时 xmpp 会关闭连接 当互联网恢复时 我尝试重新连接到服务器 成功重新连接后 我收到以下流错误Client already l
  • 如何将一个ImageView拖放到另一个ImageView上?

    我对 Android 还很陌生 但已经成功地管理了一些零碎的东西 我现在想要实现的是一个简单的拖放活动 它允许用户 将形状 ImageView 拖放到另一个形状 ImageView 上 如果图像 匹配 它应该替换它所放置的图像 如果没有 它
  • 如何在 filepond vue 上添加所需的验证?

    我读过这个文档 https github com pqina vue filepond 我尝试这样添加
  • Chrome 扩展 - 从后台网站的单独页面获取 html

    我做了一个扩展 可以跟踪一个人在漫画网站上阅读的漫画 并在他们的收藏夹页面中列出他们最后阅读的章节 我最近想出了一个有用的功能来使扩展变得更好一些 我想为用户提供一个选项 使其能够仅跟踪他们在网站上收藏的漫画 因此 当他们阅读时 扩展程序将
  • 最有效、最现实的免费网络应用程序负载测试器?

    我正在挑选工具来对我的 Ruby on Rails 应用程序进行负载测试 到目前为止我正在尝试 阿帕奇基准 自动工作台 httperf selenium trample 还有什么值得看的吗 我没有大量的硬件 因此效率是一个问题 著名的 至少
  • BeautifulSoup 在 Amazon EC2 机器上的行为有所不同

    我正在运行以下脚本 from bs4 import BeautifulSoup import urllib2 import sys print sys version url https www google com finance pag
  • 从 std::cin 读取密码

    我需要从标准输入读取密码并且想要std cin不要回显用户输入的字符 如何禁用 std cin 的回显 这是我当前正在使用的代码 string passwd cout lt lt Enter the password getline cin
  • 使用Polymer 2.0中的iron-scroll-threshold处理滚动,以实现scroll-target = document

    我正在尝试处理滚动阈值事件 使用以下代码行
  • QuickBooks 无法在 Google App Engine 上运行

    我试图通过运行这个简单的代码来从谷歌应用程序引擎在线连接到quickbooks OAuthCredentials oauthcredentials new OAuthCredentials consumerKey consumerSecre
  • 运行 shell 命令并捕获输出

    我想编写一个函数来执行 shell 命令并返回其输出作为字符串 无论是错误消息还是成功消息 我只想得到与使用命令行得到的相同结果 可以做这样的事情的代码示例是什么 例如 def run command cmd print run comma
  • java.library.path 中没有 mssql-jdbc_auth-8.2.1.x64

    我正在尝试连接到 Maven 项目中的 SQL DB 但不断出现以下异常 com microsoft sqlserver jdbc SQLServerException 此驱动程序未配置为集成身份验证 引起 java lang Unsati
  • 在 React 中使用动态键来 setState [重复]

    这个问题在这里已经有答案了 我从输入字段将值作为参数发送给设置状态的函数 我有多个输入字段 因此想使用它们的名称 等于它们的状态键 然后使用相同的函数并将键和值传递给设置状态的函数 这是我的代码
  • 如何向森林图添加箭头?

    我会在森林图中添加两个箭头 以便将论文发送到期刊 这是来自的演示图metafor forest require metafor data dat bcg res lt rma measure RR ai tpos bi tneg ci cp
  • 在同一字段上使用通配符的空白和数字的多个过滤条件不起作用

    尽管关于这个主题的问题很多 但我一直无法找到问题的解决方案 这可能是也可能不是我的错 我需要自动过滤一个范围以返回空格和以 614 开头的数字 该列已使用以下内容进行预格式化 Range B C NumberFormat 0 这是为了删除