我需要查找字符串是否包含在选定的单元格中。我不关心位置,我只想了解它是否存在于选定的单元格中。为此,我使用选定单元格上扩展的 FIND 函数。我得到一个 0 和 1 的数组。如果数组中全是 0,我想将其 REDUCE 为包含 0 的单个单元格,如果至少有一个单元格包含 1,则将其 REDUCE 为任何值 >0。我尝试将 REDUCE 与总和一起使用,但总是给出 0。为什么?
=REDUCE(0;IF(IFERROR(FIND(Sheet1!B$7;INDIRECT("'"&A1&"'!A1:Z200"))=0;0)=0;0;1);LAMBDA(a;b;a+b))
谢谢。
OP 公式的内部部分是
IF(IFERROR(FIND(Sheet1!B$7;INDIRECT("'"&A1&"'!A1:Z200"))=0;0)=0;0;1)
这确实会按照 OP 的意图生成一个由 0 和 1 组成的数组,但是比要求的要麻烦得多,并且增加了不必要的理解努力。
TRUE
我怀疑根本原因是 OP 忽略了(或没有意识到)当合并到算术表达式中时,和的布尔结果FALSE
可以分别被视为值 1 和 0。@Pb 和@Ron Rosefield 在问题评论中提出的建议都很好地说明了这一点。
这两个建议都用一个函数包裹
FIND
(ISERR
一个在 中,ISNUMBER
另一个在 中),该函数提供布尔结果。然后,将这些结果合并到算术表达式中 - 分别使用--boolean
和1-boolean
来获得所需的 0/1 值。在我看来,Excel 公式中布尔值和数字的等价性非常值得了解,这也是我发布此答案的动机。