So fügen Sie in LibreOffice den aktuellen Monat hinzu calc


23

Dies scheint eine naheliegende Frage zu sein.

Ich habe eine Datumsspalte und möchte eine Formel erstellen, um sie für jede Spalte um einen Monat zu erhöhen.

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

Wie fügt man einem Datum einen Monat hinzu?

Antworten:


16

In der aktuell bevorzugten Antwort werden kurze Monate übersprungen, die auf lange folgen

Set A1 = 2014-01-31 Dann ist das Ergebnis mit = DATE (YEAR (A1), MONTH (A1) +1, DAY (A1)) 2014-03-03 und überspringt den Februar.

Der oben vorgeschlagene EDATE-Ansatz verliert Tage

Kurze Monate führen dazu, dass EDATE mehrere Tage hintereinander fällt. ZB = EDATE (DATE (2014,1,31), 1) erzeugt zwar den 28.02.2014, aber die erneute Anwendung führt zum 28.03.2014, was nicht der letzte Tag im März ist.

Eine Lösung, die funktioniert: Inkrementieren Sie die Monate, wobei der Tag auf Null gesetzt ist

Setzen Sie den Tag auf Null und erhöhen Sie die Monate, während Sie einen Monat voraus sind. ZB Um im Januar zu beginnen, benutze DATE (2014,2,0) => 2014-01-31, dann DATE (2014,3,0) => 2014-02-28, dann DATE (2014,4,0) -> 2014 -03-31 wie man es erwarten würde, wenn man den letzten Tag eines jeden Monats logisch verfolgt.

Andere Ansätze

Anpassungen können vorgenommen werden, wenn Sie den letzten Arbeitstag im Monat oder 30-Tage-Schritte wünschen, ohne Monate zu überspringen. Dies hängt vom Ziel ab.


edatefür mich gearbeitet , ohne das Problem erwähnen Sie (Version: 4.2.7.2)
Tim Abell

1
Tim, um zu sehen, dass das Edat fehlschlägt, platziert es in Zelle C4 = Datum (2014,01,31) und platziert es in C7 = EDAT (C4,1), und es wird korrekt den 28.02.2014 anzeigen. Jetzt aber in Zelle C8 = EDATE (C7,1) setzen und es wird der falsche Wert ausgegeben, 2014-03-28, der nicht der letzte Tag im März ist. Tim, siehst du den letzten Tag im März auf diesem zweiten Schritt? (Version 3.5.4.2 - aktualisierte Version auf dieser Debian-Distribution)

1
Ah, ich verstehe, was du jetzt meinst. Danke für das klare Beispiel. Ich vergesse, was ich jetzt tat, aber ich glaube, ich habe diesen Randfall nicht getroffen und bin nicht der Subtilität von dem gefolgt, was Sie erklärt hatten. Guter Eintrag.
Tim Abell

19
=edate(a1;1)
  • edate Gibt das Datum zurück, das die angegebene Anzahl von Monaten nach oder vor dem angegebenen Datum ist.
  • Erstes Argument von edate: Startdatum.
  • Zweites Argument von edate: Anzahl der Monate. Wenn negativ, berechnet edate das Datum davor.

2
hätte den Namen nie erraten! danke :-)
Tim Abell


1
Achten Sie auf Probleme, bei denen es im neuen Monat keinen entsprechenden Tag im Monat gibt. superuser.com/a/774808/8271
Tim Abell

7

Wie in Referenz angegeben: Datum Arithmetik , dies fügt dem Monat eins hinzu:

=DATE(YEAR(A1), MONTH(A1)+1, DAY(A1))

4
Beachten Sie Folgendes, wenn Sie an einem Tag beginnen, für den es kein Äquivalent gibt: ZB wird der 31. August + 1 Monat als 1. Oktober berechnet, da der 31. September ausbleibt.
Tim Abell

0

Ich denke, Sie müssen möglicherweise Beschriftungen verwenden, da Datumsangaben nur als Zahlen gespeichert werden, die dann in einem von Ihnen gewählten Format angezeigt werden. Um einen Monat hinzuzufügen, benötigen Sie eine komplexe Berechnung, um zu bestimmen, wie viele Tage Sie zum nächsten Monat führen. Hoffe ich liege falsch und jemand hat eine Antwort.


Ich dachte auch darüber nach, einen komplizierten Algorithmus zusammenzufassen, bei dem dem Datum 31 Tage hinzugefügt werden und dann auf den ersten des Monats zurückgegangen wird. Beide Wege scheinen zu schwierig zu sein.
Trimbletodd

Auf dieser Website gibt es möglicherweise einige Ideen, die Ihnen helfen könnten. cpearson.com/excel/datearith.htm
BrianA

Großartige Referenz. Sieht aus wie es funktioniert.
Trimbletodd

0

FWIW das ist die Lösung, die ich verwendet habe, wenn der Monat und das Jahr wichtig sind:

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

Zelle in der ersten Zeile zum Festlegen des Startdatums als Datumsobjekt. Die folgenden Zellen nehmen die vorherige Zelle, erhalten das Monatsende und fügen dann einen Tag hinzu ( A2 = 2016/01/31 + 1). Funktioniert sowohl für LibreOffice Calc als auch für Google Spreadsheets.


0

Für Jahr, Monat, Tag, erhöht um einen Monat, gleicher Tag des Monats (wie letzter Tag, der Schaltjahre berücksichtigt):

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

Ziehen Sie dann A4 so weit wie Sie möchten nach unten. Erzeugt diese Ausgabe:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.