首页 > 解决方案 > Arrayformula - 单元格包含文本(Google 表格)

问题描述

我有下面写的公式。在 E 列 = "EPIs" 的条件下,还有第二个条件来验证 G 列是否包含字符串("CC"、"Hemo" 或 "odonto")。

但是第二个条件没有正确返回“包含指定字符串”部分。Col E = "EPI" 为真,但在第二种情况下为假。

我怎样才能让它工作?

=ARRAYFORMULA(
IF(B3:B="";"";
IF(M3:M="";"Verificar";
IF(M3:M="Realizado - Sem Certificado";"Verificar";
IF(M3:M="Manutenção";"Verificar";
IF(M3:M="Verificar";"Verificar";
IF(M3:M="Verificar se está ativo";"Verificar";
IF(M3:M="Não realizado";"Verificar";
IF(M3:M="Desativado";"DESATIVADO";

IF(E3:E="EPIs";
(IF(G3:G="*CC*";IF(DATE(YEAR(M3:M);MONTH(M3:M)+6;DAY(M3:M))>TODAY();IF(DATE(YEAR(M3:M);MONTH(M3:M)+4;DAY(M3:M))>TODAY();"OK";"Realizar CQ");"Vencido"); 
IF(G3:G="*hemo*";IF(DATE(YEAR(M3:M);MONTH(M3:M)+6;DAY(M3:M))>TODAY();IF(DATE(YEAR(M3:M);MONTH(M3:M)+4;DAY(M3:M))>TODAY();"OK";"Realizar CQ");"Vencido");
IF(G3:G="*odonto*";IF(DATE(YEAR(M3:M)+2;MONTH(M3:M);DAY(M3:M))>TODAY();IF(DATE(YEAR(M3:M)+2;MONTH(M3:M)-2;DAY(M3:M))>TODAY();"OK";"Realizar CQ");"Vencido"); 
IF(DATE(YEAR(M3:M)+1;MONTH(M3:M);DAY(M3:M))>TODAY();IF(DATE(YEAR(M3:M)+1;MONTH(M3:M)-2;DAY(M3:M))>TODAY();"OK";"Realizar CQ");"Vencido")
        ))));

IF(E3:E="Odonto Intra";IF(DATE(YEAR(M3:M)+2;MONTH(M3:M);DAY(M3:M))>TODAY();IF(DATE(YEAR(M3:M)+2;MONTH(M3:M)-2;DAY(M3:M))>TODAY();"OK";"Realizar CQ");"Vencido");
IF(DATE(YEAR(M3:M)+1;MONTH(M3:M);DAY(M3:M))>TODAY();IF(DATE(YEAR(M3:M)+1;MONTH(M3:M)-2;DAY(M3:M))>TODAY();"OK";"Realizar CQ");"Vencido") ) ))))))))))

标签: google-sheetscontainsarray-formulas

解决方案


您编写的公式比您需要的要复杂得多。

我认为使用 EDATE() 和 LOOKUP() 可以更轻松地达到预期的效果。

=ARRAYFORMULA(IF(M3:M="";;LOOKUP(TODAY()-EDATE(M3:M;IF(REGEXMATCH(G3:G;"Hemo|CC");6;IF(REGEXMATCH(G3:G;"Odonto");24;12)));{-9^9;-60;0};{"OK";"Realizar";"Vencido"})))

推荐阅读