如何在LibreOffice calc中添加月份到目前为止


21

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

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

10/2013, 11/2013, 12/2013, 1/2014, 2/2014, ...

你如何在一个日期添加一个月?

Answers:


15

目前最受青睐的答案将会在短期内逐渐消失

设置A1 = 2014-01-31然后使用= DATE(年(A1),月(A1)+1,日(A1))的结果将是2014-03-03,因此跳过二月。

上面建议的EDATE方法失去了几天

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

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

将日期设置为零,并增加月份,同时提前一个月。例如,从1月开始使用DATE(2014,2,0)=> 2014-01-31然后DATE(2014,3,0)=> 2014-02-28,然后DATE(2014,4,0) - > 2014通过逻辑跟踪每个月的最后一天,可以预期-03-31。

其他方法

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


edate工作对我来说没有你提到的问题(版本:4.2.7.2)
蒂姆·阿贝尔

1
蒂姆看到edate失败,放在单元格C4 = Date(2014,01,31)并放置在C7 = EDATE(C4,1),它将正确显示2014-02-28。但是现在位于单元格C8 = EDATE(C7,1)并且它将给出错误的值,2014-03-28这不是3月的最后一天。蒂姆,你是在第二步看到3月的最后一天了吗?(版本3.5.4.2 - 此Debian发行版的更新版本)

1
啊,我明白你的意思了。谢谢你的明确例子。我忘记了我现在正在做的事情,但我认为我没有遇到过这种边缘情况而且没有遵循你所解释的那些微妙之处。好帖子。
蒂姆阿贝尔2015年



0

我认为您可能需要使用标签,因为日期会以数字形式存储,然后以您选择的格式显示。要添加一个月,您需要进行复杂的计算,以确定将您带到下个月的天数。希望我错了,有人有答案。


我还想到了一个复杂的算法,即添加31天的日期,然后回到本月的第一天。两种方式都显得过于困难。
trimbletodd 2013年

本网站上可能有一些想法可以帮助您。cpearson.com/excel/datearith.htm
BrianA 2013年

很好的参考。看起来很有效。
trimbletodd 2013年

0

FWIW这是我在月和年重要的地方使用的解决方案:

A1=DATE(2016,1,1)
A2=EOMONTH(A1,0)+1

第一行单元格,将开始日期设置为日期对象。以下单元格获取前一个单元格,获取月末,然后添加一天(A2 = 2016/01/31 + 1)。适用于LibreOffice Calc和Google Spreadsheets。


0

对于年,月,日递增一个月,同一天的月份(如闰年的最后一天):

A1 "DATE" # Label of column
A2 "=DATE(2011, 2, 0)"
A3 "=EDATE(A$2,COUNTA(A$2))"
A4 "=EDATE(A$2,COUNTA(A$2:A3))"

然后将A4向下拖动到您喜欢的位置。生成此输出:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.