AND / OR函数求逆顺序

时间:2019-02-13 10:50:50

标签: excel-formula

我偶然发现了this个问题,并且注意到Excel评估ANDOR函数的某种方式。

问题是关于使用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将以不同的顺序评估参数:

  1. ISNUMBER(SEARCH({"test1","test2"},B1))
  2. ISNUMBER(SEARCH("test1",B1))
  3. ISNUMBER(SEARCH("test1","test2"))
  4. ISNUMBER(#VALUE!)
  5. 结果:FALSE

但是:

如果它在ORAND函数内部,则相反。

  1. OR(ISNUMBER(SEARCH({"test1","test2"},B1)))
  2. OR(ISNUMBER(SEARCH({"test1","test2"},"test2")))
  3. OR(ISNUMBER({"#VALUE!",1}))
  4. OR({FALSE,TRUE})
  5. 结果:TRUE


我不理解这些步骤背后的逻辑,我不了解Excel的行为,这取决于公式是位于AND还是OR中。有人可以解释吗?

编辑:

问题似乎还不够清楚。我的问题是:

为什么Excel会以相反的顺序对SEARCHAND语句中的函数(在这种情况下为OR)的参数求值,例如允许将矩阵值传递给它们?

0 个答案:

没有答案