如何在 LibreOffice calc 中添加月至今日

tri*_*odd 26 date libreoffice-calc

这似乎是一个显而易见的问题。

我有一个日期列,我想创建一个公式来为每一列增加一个月。

10/2013, 11/2013, 12/2013, 1/2014, 2/2014, ...
Run Code Online (Sandbox Code Playgroud)

如何在日期上加一个月?

小智 23

=edate(a1;1)
Run Code Online (Sandbox Code Playgroud)
  • edate 返回指定日期之后或之前指定月数的日期。
  • edate 的第一个参数:开始日期。
  • edate 的第二个参数:月数。如果为负,则 edate 计算之前的日期。


小智 19

当前受欢迎的答案将跳过长月份之后的短月份

设置 A1=2014-01-31 那么使用 =DATE(YEAR(A1), MONTH(A1)+1, DAY(A1)) 的结果将是 2014-03-03,从而跳过二月。

上面建议的 EDATE 方法会浪费几天时间

短短几个月会导致 EDATE 连续几个月下降几天。例如 =EDATE(DATE(2014,1,31),1) 确实产生 2014-02-28,但再次应用它会产生 2014-03-28,这不是三月的最后一天。

一个有效的解决方案:在日期设置为零的情况下增加月份

将日期设置为零,并增加月份,同时提前一个月。例如从一月开始使用 DATE(2014,2,0) => 2014-01-31 然后 DATE(2014,3,0) => 2014-02-28,然后 DATE(2014,4,0) -> 2014 -03-31 符合逻辑地遵循每个月的最后一天。

其他方法

如果您想要一个月中的最后一个工作日,或者在不跳过月份的情况下以 30 天为增量进行调整,则可以进行调整。取决于目标。


tri*_*odd 7

正如参考中给出的:Date Arithmetic,这给月份增加了一个:

=DATE(YEAR(A1), MONTH(A1)+1, DAY(A1))
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您从没有等价的一天开始:例如,8 月 31 日 + 1 个月计算为 10 月 1 日,因为没有 9 月 31 日。 (4认同)