2009-08-07 96 views
0

我有一个像如何将字符串通配符模式在Excel宏匹配

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

测试我想从左侧的比赛更改为支持通配符

'F13'='F?3' 

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

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

范围实际计算结果为单细胞基础上的地方宏被调用。 $ B $ 3是用户输入的模式。

+0

“Excel不支持除VBA代码外的正则表达式,但我更喜欢这是在宏中完成的。”我很困惑:宏是用VBA代码编写的。你的意思是说你更喜欢纯粹的工作表函数/公式吗? – devuxer 2009-08-07 20:40:06

+0

我越来越喜欢访问我认为'宏'与'VBA函数'不同的地方。我的意思是一个公式是。 – SpliFF 2009-08-08 05:10:46

回答

0

= SEARCH( “F 3?”, “F13”)= 1

在你的第二个例子,如果B3包含注入文本通配符

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

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

+0

$ DATA是由于从Open Office(将公式转换为StarBasic)复制函数而导致的错字。它应该说数据!因为它是一个工作表参考。 – SpliFF 2009-08-08 05:13:50

+0

此解决方案因搜索未找到字符串时引发#VALUE错误而失败。这打破了整个公式。与FIND一样。有没有办法测试#VALUE? – SpliFF 2009-08-08 05:51:56

+0

没关系。 IF(NOT(ISERROR(FIND($ B $ 3,DATA $ $ A $ 2:$ A $ 1501)= 1))) – SpliFF 2009-08-08 05:56:29