正则表达式匹配 if、and、和日期组合公式

Regexmatch if, and, and date combined formula

我在尝试修复我在 post 中找到的旧公式时遇到问题:

我遇到的问题是,现在他们将“最后一次晋升”或“f”列更改为“从不”而不是空白,这样编码就无法用于正在晋升的 Rct至 Cdt.

当前公式:

=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"))

我得到的错误:

Function ADD parameter 1 expects number values. But 'Never' is a text and cannot be coerced to a number.

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

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

如果能帮助我修复此编码,我将不胜感激。

使用:

=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"))

我不确定如何调整所有这些 regexmatch(),但这是解决问题的办法。与以往一样,您可以通过查找 here:

来了解所有函数

=ARRAYFORMULA(IF(C2:C="",IF(MMULT((TODAY()>{C2:C+20,N(F2:F)+{44,74}})(B2:B={"rct","cdt","pvt"}),{1;1;1})(MMULT(N(REGEXMATCH(D2:E "2 周|1 周|天|小时|分钟")),{1;1})=2),"Y","N")))

另外,我很确定你需要修复另一个问题的是 N() 你的日期范围,它将把任何文本变成数字 0,从而自动创建一个 true 来判断今天是否是“之后"它与否。