如何在Excel宏中匹配字符串通配符模式

发布于 2024-08-02 01:38:17 字数 346 浏览 8 评论 0原文

我有一个测试,就像

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

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

'F13'='F?3'

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

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

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

I have a test like

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

I want to change it from a left-side match to a test that supports wildcards

'F13'='F?3'

Excel doesn't support regex except in VBA code but i'd prefer this was done in a macro. I should point out that the actual test isn't a simple string, but cell references (this may be important, I'm not sure):

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

The range actually evaluates to a single cell based on where the macro is called from. $B$3 is the pattern input by the user.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

欲拥i 2024-08-09 01:38:17

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

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

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

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

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

In your second example, if B3 contains wildcards infused text

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

SEARCH returns the position where it finds the first argument. The "=1" ensures the string starts with the first argument as opposed to somewhere in the middle. I'm not sure how your $DATA argument works, so I just copied it verbatim.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文