【问题标题】:ISNUMBER statement only reading first conditionISNUMBER 语句只读取第一个条件
【发布时间】:2014-07-09 05:46:08
【问题描述】:

早安,

我正在尝试将此公式插入到 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 只读取第一个条件“PD”并忽略其余的

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

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

【问题讨论】:

    标签: excel if-statement


    【解决方案1】:

    您只是缺少一个 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)

    【讨论】:

    • 您的代码工作得更好、更准确...都试过了。非常感谢
    【解决方案2】:

    你做错了什么是你试图在一个通常不计算数组的公式中计算一个数组。您可以通过按住 Ctrl+Shift 来评估这些公式,然后按 Enter。

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

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

    调用类似的数组(使用 Ctrl+Shift+Enter)。

    【讨论】:

    • 谢谢,这更短了!!赞赏
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多