Comment ajouter un mois à ce jour dans LibreOffice calc

23

Cela semble être une question évidente.

J'ai une colonne de date et je veux créer une formule pour l'augmenter d'un mois pour chaque colonne.

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

Comment ajouter un mois à une date?

trimbletodd
la source

Réponses:

16

La réponse actuellement préférée sautera les mois courts qui suivent les mois longs

Set A1 = 2014-01-31 Ensuite, le résultat utilisant = DATE (YEAR (A1), MONTH (A1) +1, DAY (A1)) sera 2014-03-03, sautant ainsi février.

L'approche EDATE suggérée ci-dessus perd des jours

De courts mois, EDATE perd des jours pour des mois successifs. Par exemple = EDATE (DATE (2014,1,31), 1) produit le 2014-02-28, mais en l'appliquant à nouveau, cela donne le 2014-03-28, qui n'est pas le dernier jour de mars.

Une solution qui fonctionne: incrémenter les mois avec le jour à zéro

Réglez le jour sur zéro et incrémentez les mois, tout en ayant un mois d'avance. Par exemple, pour commencer en janvier, utilisez DATE (2014,2,0) => 2014-01-31 puis DATE (2014,3,0) => 2014-02-28, puis DATE (2014,4,0) -> 2014 -03-31 comme on pourrait s'y attendre en suivant logiquement le dernier jour de chaque mois.

D'autres approches

Des ajustements peuvent être effectués si vous voulez le dernier jour ouvrable du mois, ou des incréments de 30 jours sans sauter de mois, etc. Dépend de l'objectif.


la source
edatetravaillé pour moi sans le problème que vous mentionnez (Version: 4.2.7.2)
Tim Abell
1
Tim pour voir l'échec de la modification, placez-le dans la cellule C4 = Date (2014,01,31) et placez-le dans C7 = EDATE (C4,1) et il affichera correctement le 2014-02-28. cependant placez maintenant dans la cellule C8 = EDATE (C7,1) et cela donnera la mauvaise valeur, 2014-03-28 qui n'est pas le dernier jour de mars. Tim voyez-vous le dernier jour de mars sur cette deuxième étape? (Version 3.5.4.2 - version mise à jour sur cette distribution Debian)
1
Ah, je vois ce que tu veux dire maintenant. Merci pour l'exemple clair. J'oublie ce que je faisais maintenant, mais je pense que je n'ai pas touché ce cas de bord et que je n'avais pas suivi la subtilité de ce que vous aviez expliqué. Super article.
Tim Abell
19
=edate(a1;1)
  • edate renvoie la date correspondant au nombre de mois spécifié après ou avant la date spécifiée.
  • Premier argument de edate: date de début.
  • Deuxième argument de edate: nombre de mois. Si négatif, edate calcule la date avant.
Tarik FDIL
la source
2
n'aurait jamais deviné par le nom! merci :-)
Tim Abell
documentation help.libreoffice.org/Calc/EDATE
Tim Abell
1
attention aux problèmes où il n'y a pas de jour équivalent du mois dans le nouveau mois. superuser.com/a/774808/8271
Tim Abell
7

Comme indiqué dans la référence: Date Arithmetic , cela ajoute un au mois:

=DATE(YEAR(A1), MONTH(A1)+1, DAY(A1))
trimbletodd
la source
4
Attention, si vous commencez un jour qui n'a pas d'équivalent: par exemple le 31 août + 1 mois est calculé comme le 1er octobre car il n'y a pas de 31 septembre
Tim Abell
0

Je pense que vous devrez peut-être utiliser des étiquettes car les dates sont stockées tout comme les nombres qui sont ensuite affichés dans le format que vous choisissez. Pour ajouter un mois, vous aurez besoin d'un calcul complexe pour déterminer combien de jours vous amèneront au mois suivant. J'espère que je me trompe et que quelqu'un a une réponse.

BrianA
la source
J'ai également pensé à un ensemble compliqué d'un algorithme compliqué d'ajouter 31 jours à la date, puis de revenir au premier du mois. Les deux voies semblent trop difficiles.
trimbletodd
Il peut y avoir quelques idées sur ce site qui pourraient vous aider. cpearson.com/excel/datearith.htm
BrianA
Grande référence. On dirait que ça marche.
trimbletodd
0

FWIW c'est la solution que j'ai utilisée là où le mois et l'année comptent:

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

Première cellule de ligne pour définir la date de début en tant qu'objet de date. Les cellules suivantes prennent la cellule précédente, obtiennent la fin du mois, puis ajoutent un jour ( A2 = 2016/01/31 + 1). Fonctionne pour LibreOffice Calc et Google Spreadsheets.

Thien
la source
0

Pour l'année, le mois, le jour incrémenté d'un mois, le même jour du mois (comme le dernier jour pour les années bissextiles):

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

Faites ensuite glisser A4 vers le bas autant que vous le souhaitez. Produit cette sortie:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
Matt Kneiser
la source