Excel的查找功能; 值的例外情况

Rac*_*cso 7 excel return function find

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

  1. 是否有另一个Excel函数作为Find工作但在没有找到匹配时返回实际值(例如-1)?
  2. 该功能是否有任何众所周知的原因?我的意思是,谈论通用编程和软件设计,是否有一种已知的模式(或方法或设计哲学),当函数不返回时,更喜欢抛出异常而不是返回值(如-1,0,"或类似")一个"有效"的价值?

tig*_*tar 14

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

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),"No exact match")
Run Code Online (Sandbox Code Playgroud)

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

因此,如果您正在寻找某些内容并想要返回-1,如果没有匹配且您不担心区分大小写,那么这样的事情应该对您有用:

=IF(COUNTIF(A1,"*abc*")=0,-1,SEARCH("abc",A1))
Run Code Online (Sandbox Code Playgroud)

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

=IF(ISNUMBER(FIND("abc",A1)),FIND("abc",A1),-1)
Run Code Online (Sandbox Code Playgroud)

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

=IFERROR(SEARCH("abc",A1),-1)
=IFERROR(FIND("abc",A1),-1)
Run Code Online (Sandbox Code Playgroud)