Excel SEARCH 函数未返回预期结果

Excel SEARCH 函数未返回预期结果

Excel 2016 中的 SEARCH 函数有问题。我用它在数组(“Description” F1:F17)中查找“JASN”并返回相应的结果(“Result” E1:E17)。这样就行了。

但是,如果“JASN”不存在,则计算结果为零。因此,我想使用公式的搜索部分来捕获此错误。问题是,错误捕获的搜索不会将范围视为数组 - 是的,此公式是作为数组输入的,否则第二个搜索函数将不起作用。

样本数据

样本数据https://drive.google.com/open?id=1hybzTVQ9tdNPdyItDUf-hC5cZIMUrwJQ

使用搜索功能的工作公式

{=SUMPRODUCT(MAX(ROW($F$1:$F$17)*(ISNUMBER(SEARCH("jasn",$F$1:$F$17)))))}

无法捕捉错误/零结果的公式

{=IF(SEARCH("jasn",$F$1:$F$17)=0,"this sux",INDEX($E$1:$E$17,SUMPRODUCT(MAX(ROW($F$1:$F$17)*(ISNUMBER(SEARCH("jasn",$F$1:$F$17)))))))}

为什么这个公式没有返回与第一个公式中的 SEARCH 相同的结果?

{=搜索(“jasn”,$F$1:$F$17)}

使用 EVALUATE 功能并逐步执行第一个公式,SEARCH 返回多个#value!和一个“1”——这是正确的。在简化版本中,SEARCH 返回 F1 中的“Description”,没有其他内容。它不会评估 F1:F17 中的整个数组。

为什么在同一范围内使用同一函数(搜索)会得到不同的结果?

答案1

是的,SEARCH 将返回一个数组,但是您需要对该数组执行某些操作,否则它只会返回第一个结果:

=SUMPRODUCT(--(ISNUMBER(SEARCH("jasn",$F$1:$F$17))))=0

jasn如果在数组中的任何地方都找不到,则返回 TRUE 。

所以:

=IF(SUMPRODUCT(--(ISNUMBER(SEARCH("jasn",$F$1:$F$17))))=0,"Not Found",INDEX($E$1:$E$17,SUMPRODUCT(MAX(ROW($F$1:$F$17)*(ISNUMBER(SEARCH("jasn",$F$1:$F$17)))))))

但是我们可以使用AGGREGATE来避免重复:

=IFERROR(INDEX($E:$E$,AGGREGATE(14,7,ROW($E$1:$E$17)/(ISNUMBER(SEARCH("jasn",$F$1:$F$17))),1)),"Not Found")

并且可以正常输入

相关内容