【问题标题】:calc/excel if find text in two cells and output textcalc/excel 如果在两个单元格中查找文本并输出文本
【发布时间】:2014-04-18 21:33:52
【问题描述】:

这可能太简单了,但我就是找不到解决方法。 我要细胞

  A1              B1
high ground     low water

所以我需要一个公式来说明如果单元格 A1 包含“高地”并且单元格 B1 包含单词“水”输出“OK”,否则输出“no ok”

提前致谢

【问题讨论】:

  • 我对openoffice不太熟悉,但是可以试试=IF(COUNTIF(A1,"*high ground*")+COUNTIF(B1,"*water*")=2,"OK","NOT OK")或者=IF(AND(ISNUMBER(SEARCH("high ground",A1)),ISNUMBER(SEARCH("water",B1))),"OK","NOT OK")

标签: excel openoffice-calc


【解决方案1】:

下一个公式对我有用:

=if(AND(A2="high ground",(B2=SEARCH("water",B2,1))>0),"ok","not ok")

我假设单元格 A2 包含高水位,而单元格 B2 包含低水位。

在 if 语句中,有两个条件:如果单元格 A2= 高地,如果单元格 b2 包含水,则可以,否则不可以。

希望对你有用!!

抱歉,下一个是正确的(没有 HALLAR,而是 SEARCH):

请尝试下一步:

=IF(AND(A1="high ground",(B1=SEARCH("water",B1,1))>0),"ok","not ok"

【讨论】:

  • 抱歉,下一个公式是正确的(没有 HALLAR 代替 SEARCH):=IF(AND(A1="high ground",(B1=SEARCH("water",B1,1))>0) “好”、“不好”)
【解决方案2】:

对于 OpenOffice / LibreOffice Calc,以下功能应该可以工作:

=IF(AND(A1 = "high ground";NOT(ISERROR(SEARCH("water";B1;1))));"OK";"not OK")

或者用 cmets 分成多行:

=IF(                                   # First function: result will depend on condition
    AND(                               # Condition: two sub-conditions have to be TRUE
        A1 = "high ground";            # First subcondition: simple equality check
        NOT(                           # Second subcondition
            ISERROR(                   # Check if the embededded function (SEARCH()) returns an error
                SEARCH("water";B1;1)   # Search B1 for substring. Will throw an error if there's no match in B! for string "water"
            )
        )
    );
    "OK";                              # Return value if condition is fulfilled;
    "not OK"                           # return value if on of the sub-conditions isn't fulfilled.
)

NOT(ISERROR(SEARCH("water";B1;1))) 有点复杂。由于SEARCH() 函数(以及FIND() 函数)在不匹配时会引发错误,因此您必须处理该错误,否则完整的公式将返回错误而不是字符串“not ok”。对于错误处理,我将SEARCH() 函数放入ISERROR() 函数中,将SEARCH() 的结果转换为布尔值(TRUEFALSE)。由于如果搜索找到匹配项,我们需要 TRUE 结果,因此我们必须使用 NOT() 函数“反转”ISERROR() 的输出。

也可以使用正则表达式搜索子字符串,但这需要在 Calc Program Options 中启用正则表达式;使用ISERROR(SEARCH()) 的建议解决方案应该独立于该配置设置。

【讨论】:

  • 现在我需要处理大约 4000 行,我一遍又一遍地使用这个过滤器来获得我需要的不同输出,但在某些时候 calc 会超出它的限制并给我一个错误,可能是因为我用得太多。我想知道如何处理这个......
【解决方案3】:

试试这个:

=if(AND(A1="high ground",B1="*water*"),"OK","Not OK")

【讨论】:

  • 为什么你认为它没有提供答案?
  • 大家好,这些似乎都不起作用。在 calc 中我收到 501 错误,在 excel 2007 中会弹出一个对话框,说明公式中的错误。我做错了吗?
  • 您可能必须将参数分隔逗号替换为分号。这取决于计算语言设置。语言设置为英语(美国),以下公式有效:=IF(AND(A1 = "high ground";B1 = "low water");"OK"; "not OK")
【解决方案4】:

对不起,我在 If 语句中包含通配符之前的回答,由于某种原因,excel 无法识别它们。

我已经测试过这个,它应该适合你:

=IF(AND(A1="high ground",ISNUMBER(SEARCH("water",B1))),"OK","Not OK")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多