SEARCH()函数中find_text参数的数组评估

时间:2014-08-13 16:46:12

标签: excel excel-formula

说我有以下内容:

Excel screenshot

在单元格C1中输入以下公式,然后点击Evaluate Formula - > Evaluate会产生截然不同的结果:

公式1:B$1:B$5评估为非数组

{=SEARCH(B$1:B$5,A1)}

enter image description here

公式2:B$1:B$5评估为数组

{=IF(SEARCH(B$1:B$5,A1),"")}

enter image description here

为什么,确实如此?这种行为的原因是什么?如果可能,请提供其他使用其他Excel功能的示例来说明这里发生的事情。

顺便: 我在尝试接受this question.

的答案时提出了我的问题

1 个答案:

答案 0 :(得分:1)

通常,只有满足以下两个条件,才会由工作表函数返回值数组:

1)有问题的公式本身能够返回一个值数组,或者包含在几个函数的一个更大的设置中,一个或多个函数位于相关函数之前(因此行为)在它上面)拥有该财产。无论这种能力是需要强制的(即通过数组输入(CSE))还是功能的内置功能,对于你所寻求的答案而言并不重要。

2)生成的数组必须传递给另一个函数进行处理。 Excel比你想象的更具有目的性:它并不相信将一系列值作为目的返回。

至于你的例子,它不是SEARCH,当数组输入时,不能处理数组(它是)。更重要的是,没有进一步的功能可以作用于该阵列。在IF版本中,正是如此,如果再次处理,您会发现当前数组仅减少到该数组中的第一个元素。围绕IF缠绕另一个功能,例如SUM,你可以更进一步,依此类推。

这是通过评估公式工具评估公式和重复评估公式之间的主要区别。通过在公式栏中选择功能的各个部分并按F9。 无论上述两个条件是否满足,后者总是返回一个值数组。然而 - 并没有多少人意识到这一点 - "评估"如此获得的结果最终会导致不正确的结果,因此只有在知道其局限性的情况下才能使用。

举例如下:

A1:A10为空,公式为:

= SUMPRODUCT(0+(A1:A10 ="&#34))

正确返回10。

现在只选择公式栏中的A1:A10部分,然后按F9。 Excel,被迫"评估"范围,返回:

= SUMPRODUCT(0 +({0; 0; 0; 0; 0; 0; 0; 0; 0; 0} ="&#34))

,在进一步处理时,结果(正确地看起来似乎)在0的完全不同的结果中。

此致