7

我最近了解到,当Excel 的 Find 函数在大海捞针中找不到针(即找不到匹配项)时,它会返回 #VALUE 错误。我对这种行为有几个问题:

  1. 是否有另一个 Excel 函数可以作为 Find 但在未找到匹配项时返回实际值(例如 -1)?
  2. 该功能有这种行为有什么众所周知的原因吗?我的意思是,在谈论通用编程和软件设计时,是否有一种已知模式(或方法论或设计理念)在函数不返回时更喜欢抛出异常而不是返回值(如 -1、0、“”或类似)一个“有效”的价值?
4

1 回答 1

14

Find 函数查找区分大小写的匹配,并且可以使用 IsNumber 进行测试,例如:

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),"No exact match")

有一个非常相似的函数叫做 Search,它做同样的事情,但不区分大小写。如果未找到匹配项,它也会返回错误。

因此,如果您正在寻找某些东西并希望在没有匹配项的情况下返回 -1 并且您不担心区分大小写,那么这样的事情应该适合您:

=IF(COUNTIF(A1,"*abc*")=0,-1,SEARCH("abc",A1))

对于区分大小写的搜索,它将是:

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),-1)

如果您使用的是 Excel 2007 或更高版本,则可以使用 IFERROR 跳过错误检查:

=IFERROR(SEARCH("abc",A1),-1)
=IFERROR(FIND("abc",A1),-1)
于 2013-08-09T17:15:36.807 回答