【问题标题】:Filter number with option "begins with"带有“开头”选项的过滤器编号
【发布时间】:2015-03-12 07:20:27
【问题描述】:

当我在组合框 ex: 15* 的“搜索”框进行过滤时,我们可以使用“开始于”选项过滤 excel 中的数字吗?没关系,但是在数字过滤器/自定义过滤器中,我使用“开头”它不起作用。我尝试使用组合框中“搜索”的方式记录宏以获取代码,但这是不可能的。

如何为此编写 VBA 代码。谢谢,这是录制的宏。

ActiveSheet.Range("$A$8:$AF$1194").AutoFilter Field:=12, Criteria1:=Array( _  
    "1521", "1522", "1526", "1541", "1542", "1543", "1561"),Operator:=xlFilterValues

但我想过滤值 15*

【问题讨论】:

  • 请显示您尝试过但不起作用的代码。

标签: vba filter


【解决方案1】:

是的,你是对的,这在 AutoFilter 中是不可能的。
如果您的数据是数字,这是一种方法。

ActiveSheet.Range("$A$8:$AF$1194").AutoFilter Field:=12, Criteria1:=">=1500"

或者,如果您特别想要其中包含 15 的那些。

ActiveSheet.Range("$A$8:$AF$1194").AutoFilter Field:=12, Criteria1:=">=1500" _
    Operator:=xlAnd, Criteria2:="<1600"

Edit1:在评论中回答后续问题

您可以使用数据选项卡下的Text To Columns将所有数据更改为Text
步骤:

  1. 选择包含数字格式数据的整个列。
  2. 然后点击Text To Columns。在第一个和第二个对话框中按下一步
  3. 在第三个对话框中,选择 Text 而不是 General

现在,您的所有数据都是文本形式。
然后,您可以使用以下代码过滤所有以 15 开头的内容。

ActiveSheet.Range("$A$8:$AF$1194").AutoFilter Field:=12, Criteria1:="15*"

【讨论】:

  • 我是这么想的,但是数字可能超过千,我只想选择以15开头的数字。但是仅以文本开头,为什么尽管它不将数字识别为文本我将其格式化为文本
  • @kobebryant 如果可以将数字更改为文本,请查看我的编辑。
  • 太棒了,当我正常更改为文本时,excel程序会崩溃,但我使用VBA它运行顺利,哈哈。非常感谢L42,我不知道怎么和你交朋友
  • @kobebryant 我们已经是朋友,并且与 SO 社区的其他成员是朋友。他们可能会批评您或 DV 并关闭您的一些问题,但那是您学习的。这对我来说是真正的朋友。
  • 非常感谢,您说的都很好。我第一次加入所以我真的很喜欢这个论坛的外观,特别是会员喜欢你。我所有的帖子都表现不佳,但我正在努力适应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 2020-05-11
  • 2021-03-07
相关资源
最近更新 更多