我最近了解到,当Excel 的 Find 函数在大海捞针中找不到针(即找不到匹配项)时,它会返回 #VALUE 错误。我对这种行为有几个问题:
- 是否有另一个 Excel 函数可以作为 Find 但在未找到匹配项时返回实际值(例如 -1)?
- 该功能有这种行为有什么众所周知的原因吗?我的意思是,在谈论通用编程和软件设计时,是否有一种已知模式(或方法论或设计理念)在函数不返回时更喜欢抛出异常而不是返回值(如 -1、0、“”或类似)一个“有效”的价值?
我最近了解到,当Excel 的 Find 函数在大海捞针中找不到针(即找不到匹配项)时,它会返回 #VALUE 错误。我对这种行为有几个问题:
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)