我有一张电子表格,其中第一列如下
Column 1
-------------------------
Foo 1234 (22.09.21)
Baaaar 5678 (20.10.21)
第二列仅包含日期,由以下函数根据第一列生成=REGEX()
:
=REGEX($A2,"^.+\(([[:digit:]|\.]+)\)$","$1")
Column 2
-------------------------
22.09.21
20.10.21
我需要第三列,它应该包含生成的值date_in_column_2 + 14_days
。
我尝试过的是=B2+14
在 C2 中,但是如果 B2 中的日期是由正则表达式生成的而不是手动输入的,则=B2+14
在 C2 中会出现错误。
我该如何修复它?谢谢。
另外,还有一个问题。我知道这违反了问答规则,我可以将其作为单独的问题提出,但如果这真的很容易,能否演示如何date_in_column_2 + 14_days
仅针对工作日(即不包括周六和周日)进行计算?
答案1
您需要先将正则表达式的字符串结果转换为(数字)日期值,然后才能对该值进行计算。
LibreOffice 提供DATEVALUE()函数来转换日期字符串,因此您需要将 B 列中的公式嵌入到该函数中:
=DATEVALUE(REGEX($A2,"^.+(([[:digit:]|.]+))$","$1"))
为了将结果显示为日期而不是数字值,您需要适当格式化第 2 列(日期格式)。
为了增加 14 个工作日,LibreOffice 提供了工作日()函数。因此,将其放入 C 列,以“B2”作为第一个参数,以“14”作为第二个参数:
=工作日(B2,14, )
结果:
顺便说一句,我必须调整你的正则表达式才能让它为我工作(LO 7.0,德语本地化,分号作为参数分隔符) 如下:
=REGEX($A2;".*(([[:digit:]|.]+))";"$1")
因此,我结合使用 DATEVALUE()
=DATEVALUE(REGEX($A2;".*(([[:digit:]|.]+))";"$1"))