ISNUMBER声明仅读取第一个条件

时间:2014-07-09 05:46:09

标签: excel if-statement

美好的一天,

我正在尝试将此公式插入到Excel中以搜索单元格中的特定术语,并返回值" 50"如果找到这个词。

我已经能够使用以下原始公式成功实现它:

   =IF(C1394<>70,C1394,IF(ISNUMBER(SEARCH("*PD*",B1394)),"50",IF(ISNUMBER(SEARCH("*OD*",B1394)),"50",IF(ISNUMBER(SEARCH("*OC*",B1394)),"50",IF(ISNUMBER(SEARCH("*OF*",B1394)),"50",IF(ISNUMBER(SEARCH("*PC*",B1394)),"50",IF(ISNUMBER(SEARCH("*MS*",B1394)),"50",C1394)))))))

我尝试使用以下方法使我的公式更有效和动态,但是excel只读取第一个条件&#34; PD &#34;并忽略其余的

=IF(C8266 =70,IF(--ISNUMBER(SEARCH({"*PD*","*OD*","*OC*","*OF*","*PC*","*MS*"},B8266)),"50",C8266),C8266)

有人可以告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:2)

您只是错过了OR条款,请参阅:http://www.mrexcel.com/forum/excel-questions/601195-check-multiple-text-strings-cell.html#post2977162

所以你想要:

=IF(C8266=70,IF(OR(ISNUMBER(SEARCH({"*PD*","*OD*","*OC*","*OF*","*PC*","*MS*"},B8266))),"50",C8266),C8266)

答案 1 :(得分:1)

您所做的错误是您正在尝试评估通常不会评估数组的公式中的数组。您可以通过按住 Ctrl + Shift 然后按 Enter 来评估此类公式。

否则,您的公式可以缩短为以下内容:

=IF(OR(ISNUMBER((C8266=70)*SEARCH({"PD","OD","OC","OF","PC","MS"},B8266))),"50",C8266)
  • SEARCH不需要通配符。
  • 布尔乘以数字给出一个数字。错误乘以数字会产生错误。因此,您可以安全地将第一个和第二个检查组合在一起并删除--
  • 然后使用
  • OR检查数字和/或错误数组中是否至少有一个数字。

类似地调用了数组(使用 Ctrl + Shift + 输入)。