我偶然发现了this个问题,并且注意到Excel评估AND
和OR
函数的某种方式。
问题是关于使用SEARCH
在单元格中查找一些文本字符串。原始公式是
=IF(B1="","",IF(AND(ISNUMBER(SEARCH("minimum",B1)),ISNUMBER(SEARCH("maximum",B1)),ISNUMBER(SEARCH("range",B1)),NOT(ISNUMBER(SEARCH({"mean","median","mean absolute deviation","interquartile range"},B1)))),2,1))
但是有趣的部分发生在AND([...]SEARCH({"mean","median",[...]},B1)
我不知道可以将矩阵参数传递给搜索函数而无需将其定义为矩阵函数( Ctrl + Enter ),因此我决定试试吧。
B1 的值是 test2 。
以下是带有输出的公式:
=SEARCH({"test1","test2"},B1)
返回#VALUE!
(如果B1中的值为test1,则返回1)
=ISNUMBER(SEARCH({"test1","test2"},B1))
返回FALSE
=OR(SEARCH({"test1","test2"},B1))
返回#VALUE!
=OR(ISNUMBER(SEARCH({"test1","test2"},B1)))
返回TRUE
那怎么样?
如果我逐步运行“公式”,Excel将以不同的顺序评估参数:
ISNUMBER(SEARCH({"test1","test2"},B1))
ISNUMBER(SEARCH("test1",B1))
ISNUMBER(SEARCH("test1","test2"))
ISNUMBER(#VALUE!)
FALSE
如果它在OR
或AND
函数内部,则相反。
OR(ISNUMBER(SEARCH({"test1","test2"},B1)))
OR(ISNUMBER(SEARCH({"test1","test2"},"test2")))
OR(ISNUMBER({"#VALUE!",1}))
OR({FALSE,TRUE})
TRUE
AND
还是OR
中。有人可以解释吗?
问题似乎还不够清楚。我的问题是:
为什么Excel会以相反的顺序对SEARCH
或AND
语句中的函数(在这种情况下为OR
)的参数求值,例如允许将矩阵值传递给它们?