我在单元格 G5 中有一个值:
I~W478i~100
F31:F43 中有一个数组:
I~W478i~100
II~W707a~79
I~W621c~97.5
II~W693a~81.5
I~W452n~80
I~W693a~71.5
II~W707a~64
I~W478i~75
II~W724a~100
I~W707a~79
I~W693a~91.5
I~W587a~69
III~W724a~75
我是 MATCH 公式来确定数组中值的位置:
=MATCH(G5,F31:F43,0)
这将返回#N/A。
我认为 F31 中的值应该与 G5 中的值匹配。为了再次检查,我创建了另一个公式:
=IF(G5=F31,TRUE,FALSE)
返回 TRUE。但是 MATCH 函数仍然返回 #N/A。我检查了值和数组,发现两者都是数据类型“General”。
造成此问题的可能原因有哪些?
答案1
问题在于,“~”字符在函数的第一个参数中使用时是特殊字符MATCH
。它用于表示“~”后面的字符不是通配符(请参阅文档)。如果希望第一个参数包含“~”字符,则需要使用两个“~”字符。
因此,如果您将 G5 中的值从 更改I~W478i~100
为I~~W478i~~100
,则MATCH
函数将返回 1 而不是 #N/A。
正如 Scott Craner(感谢 Scott)在对该问题的评论中指出的那样,您也可以保留 G5 原样,并使用SUBSTITUTE
插入额外的“~”字符作为公式的一部分。
=MATCH(SUBSTITUTE(G5,"~","~~"),F31:F43,0)
请注意,如果 F31:F43 中的值也可能包含"*"
或"?"
字符,则还需要将每个 更改"*"
为"~*"
并将每个"?"
更改为"~?"
。