首页 > 解决方案 > Regexmatch if, and, and date 组合公式

问题描述

我在尝试修复我在这篇文章中使用的旧公式时遇到问题: Regematch if, and, and date combined forumula

我遇到的问题是,现在他们将“最后一次提升”或“f”列更改为“从不”而不是空白,这样编码对于提升为 Cdt 的 Rct 不起作用。

当前公式:

=ARRAYFORMULA(IF((((REGEXMATCH(LOWER(B2:B31), "rct"))*(TODAY()>C2:C31+20))+
          ((REGEXMATCH(LOWER(B2:B31), "cdt"))*(TODAY()>F2:F31+44))+
          ((REGEXMATCH(LOWER(B2:B31), "pvt"))*(TODAY()>F2:F31+74)))*
           (REGEXMATCH(LOWER(D2:D31), "2 weeks ago|1 week ago|day|hour|minute"))*
           (REGEXMATCH(LOWER(E2:E31), "2 weeks ago|1 week ago|day|hour|minute")),
           "Y", "N"))

我得到的错误:

函数 ADD 参数 1 需要数字值。但“从不”是文本,不能强制转换为数字。

我不明白为什么我会收到这个错误,因为我的眼睛公式没有在 Rct 的“F”列中查找,而只是 Cdt 和 Pvt。如果您从“F”列中删除“从不”,则编码工作正常

这是一个测试谷歌表文档: https ://docs.google.com/spreadsheets/d/14d-XT0xlAOj4gbHLtYYio2dJGBieFHuwvVLx8lkALl0/edit?usp=sharing

非常感谢我如何修复此编码的任何帮助。

标签: regexif-statementgoogle-sheetsgoogle-sheets-formulaarray-formulas

解决方案


采用:

=ARRAYFORMULA(IF((((REGEXMATCH(LOWER(B2:B31), "rct"))*(TODAY()>C2:C31+20))+
                  ((REGEXMATCH(LOWER(B2:B31), "cdt"))*(TODAY()>IFERROR(1*F2:F31)+44))+
                  ((REGEXMATCH(LOWER(B2:B31), "pvt"))*(TODAY()>IFERROR(1*F2:F31)+74)))*
                   (REGEXMATCH(LOWER(D2:D31), "2 weeks ago|1 week ago|day|hour|minute"))*
                   (REGEXMATCH(LOWER(E2:E31), "2 weeks ago|1 week ago|day|hour|minute")),
                   "Y", "N"))

推荐阅读