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

说我有以下几点:

Excel截图

在单元格C1input以下公式,然后单击Evaluate Formula – > Evaluate产生非常不同的结果:

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

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

在这里输入图像说明

公式2: B$1:B$5是一个数组

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

在这里输入图像说明

这究竟是为什么呢? 这种行为的原因是什么? 如果可能,请使用其他Excel函数提供其他示例来说明这里发生的事情。

括号内:我的问题是在对这个问题的接受答案进行试验的时候出现的。

通常情况下,只有满足以下两个条件,才能通过工作表函数返回值的数组:

1)所讨论的公式本身能够返回一个值的数组,或者被包含在一个更大的几个函数的设置中,一个或多个在所讨论函数之前的那些函数(因此作用于它)拥有该财产。 无论这种能力是否需要强制(即通过数组input(CSE))还是该函数的内置function,对于您所寻求的答案而言并不重要。

2)生成的数组必须传递给另一个函数进行处理。 Excel比您想象的更具目的性:它本身并没有很好的信念来返回一系列的值。

至于你的例子,当数组input时,不是SEARCH能够处理数组(就是这样)。 更多的是没有进一步的function煽动就是对arrays进行操作。 在IF版本中,正是如此,如果再处理一次,你会发现你的当前数组被简化为数组中的第一个元素。 围绕IF包裹更多的函数,例如SUM,你就可以更进一步,等等。

这里是通过评估公式工具评估公式和通过在公式栏中select函数的各个部分并按F9重复“评估”之间的主要区别。 后者将始终返回一组值,不pipe上述两个条件是否满足。 但是,并不是很多人意识到这一点 – 所获得的“评价”最终可能会导致错误的结果,所以只有在意识到其局限性的情况下才能使用。

以下面的例子为例:

A1:A10空,公式:

= SUMPRODUCT(0+(A1:A10 = “”))

正确地返回10。

现在在公式栏中只selectA1:A10部分,然后按下F9键。 Excel,被迫“评估”范围,返回:

= SUMPRODUCT(0 +({0; 0; 0; 0; 0; 0; 0; 0; 0; 0} = “”))

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

问候