Excel的查找function; 超出值的例外

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

  1. 是否有另一个Excel函数作为查找,但返回一个实际值(例如-1),当没有find匹配?
  2. 有这种行为的function是否有任何众所周知的理由? 我的意思是,谈论一般的编程和软件devise,是否有一个已知的模式(或方法论,或devise理念),当function不返回时,更喜欢抛出exception返回值(如-1,0,“”或类似的)一个“有效”的价值?

Find函数查找区分大小写的匹配项,并且可以使用IsNumber进行testing,如下所示:

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

有一个非常相似的function称为search它做同样的事情,但不区分大小写。 如果没有find匹配,它也会返回一个错误。

所以,如果你正在寻找一些东西,如果没有匹配就想返回-1,你不担心区分大小写,那么这样的东西应该适合你:

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

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

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

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

 =IFERROR(SEARCH("abc",A1),-1) =IFERROR(FIND("abc",A1),-1)