【问题标题】:How to match a string wildcard pattern in an excel macro如何在excel宏中匹配字符串通配符模式
【发布时间】:2009-08-07 03:08:14
【问题描述】:

我有一个类似的测试

LEFT('F13',2)='F1'

我想将其从左侧匹配更改为支持通配符的测试

'F13'='F?3'

Excel 不支持正则表达式,但 VBA 代码除外,但我希望这是在宏中完成的。我应该指出,实际的测试不是一个简单的字符串,而是单元格引用(这可能很重要,我不确定):

IF(LEFT($DATA.$A$2:$A$1501,LEN($B$3))=$B$3,...

范围实际上根据调用宏的位置计算为单个单元格。 $B$3 是用户输入的模式。

【问题讨论】:

  • "Excel 不支持正则表达式,除了 VBA 代码,但我更喜欢在宏中完成。"我很困惑:宏是用 VBA 代码编写的。你的意思是说你更喜欢纯工作表函数/公式?
  • 我对访问感到困惑,我认为“宏”与“VBA 函数”不同。我的意思是一个公式是的。

标签: excel worksheet-function


【解决方案1】:

=SEARCH("F?3","F13")=1

在您的第二个示例中,如果 B3 包含通配符注入文本

=搜索(B3,$DATA.$A$2:$A$1501)=1

SEARCH 返回找到第一个参数的位置。 "=1" 确保字符串从第一个参数开始,而不是在中间的某个地方。我不确定您的 $DATA 参数是如何工作的,所以我只是逐字复制它。

【讨论】:

  • $DATA 是由于从 Open Office 复制函数(将公式转换为 StarBasic)造成的拼写错误。它应该说数据!因为它是工作表参考。
  • 此解决方案失败,因为在找不到字符串时搜索会引发 #VALUE 错误。这打破了整个公式。与查找相同。有没有办法测试#VALUE?
  • 如果你使用的是2007,你可以使用IFERROR函数作为替代
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多