任何人都可以解释为什么这有效,
=查找(1E+100,搜索($O$2:$O$5,J6),$O$2:$O$4)
这从一系列单元格中查找单元格中的值,按预期工作。
但是搜索(O2:O5,J6)不能自己工作吗?
因此,SEARCH($O$2:$O$5,J6) 返回 #value 错误。我认为如果找到,这将返回该位置。如果我传入 {""},例如Search({"xyz","zyx","xsy"},J6) 这可行且有意义,但为什么范围不起作用。
一个解释将不胜感激。
最佳答案
你的问题的答案是双重的。
首先,大多数函数不会接受单个参数的多个值。让它们这样做需要将它们计算为数组公式。您可以通过使用 CTRLSHIFTENTER(而不仅仅是 ENTER)确认来强制函数手动执行此操作。您会知道它是作为数组公式输入的,因为花括号 {} 将围绕公式栏中的公式。完成后,转到“公式”选项卡 -> 评估公式以查看步骤。仅使用搜索功能,您可能会得到类似 {#N/A!;#N/A!;11;#N/A!;#N/A!;}
的信息。 .请注意,它是公式结果的数组(列表),其中大多数是错误(因为未找到文本)和一个具有正确结果的结果。
这将我们带到答案的第二部分,错误处理。同样,大多数函数都不能很好地处理错误。如果函数的任何部分出错,整个函数都会导致该错误。你可以通过像 ISNUMBER
这样的错误处理函数来解决这个问题。或 IFERROR
.
所以现在我们知道了,为什么 LOOKUP
工作?因为它作为其内置功能的一部分处理这两种情况。查找作为其内置功能的一部分,由于其工作方式的特殊性,将其参数评估为数组这意味着如果您将另一个函数作为参数提供给它(例如 SEARCH
),它将强制执行该函数被评估为一个数组.. 一些其他函数也这样做,如 SUMPRODUCT
和 INDEX
.
其次,LOOKUP
已经有内置的错误处理。如果其参数中有错误,它将返回最接近第一个参数的答案(但仍在其下方)。这就是您提供的 LOOKUP
中的第一个参数的原因。函数是1E+100
这意味着 10^100
或者基本上是 1 后跟 100 个零。找到的任何搜索结果都将是一个小于该数字的数字,因此如果它找到任何内容,它将返回该数字,因为其他所有内容都将导致 #N/A!并且 LOOKUP 将忽略这些错误。
关于excel - MS Excel 在搜索功能中通过测距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35947023/