Як додати місяць до дати в калькуляції LibreOffice


23

Це здається очевидним питанням.

У мене стовпець дати, і я хочу створити формулу, щоб збільшити її на один місяць для кожного стовпця.

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

Як додати місяць на побачення?

Відповіді:


16

Зараз відповідь, що надається перевагою, пропустить короткі місяці, що настають за довгими

Встановити 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-денний приріст, не пропускаючи місяців тощо. Залежить від мети.


edateпрацював на мене без вказаної вами проблеми (Версія: 4.2.7.2)
Тім Абел

1
Тим, щоб побачити невдачу дати, помістіть у комірку C4 = Дата (2014,01,31) та поставте у C7 = EDATE (C4,1), і це правильно відобразиться 2014-02-28. однак тепер розмістіть у комірці C8 = EDATE (C7,1), і вона дасть неправильне значення, 2014-03-28, який не є останнім днем ​​березня. Тим, ти бачиш останній день березня на цьому другому кроці? (Версія 3.5.4.2 - оновлена ​​версія цього дистрибутива Debian)

1
Ах, я бачу, що ти маєш на увазі зараз. Дякую за чіткий приклад. Я забуваю, що я робив зараз, але думаю, що я не потрапив у цю крайну справу і не дотримувався тонкощів того, що ти пояснив. Чудовий пост.
Тім Абелл

19
=edate(a1;1)
  • edate повертає дату, яка є вказаною кількістю місяців після або перед вказаною датою.
  • Перший аргумент edate: дата початку.
  • Другий аргумент edate: кількість місяця. Якщо негативний, edate обчислює дату раніше.

2
ніколи б не здогадався по імені! спасибі :-)
Тім Абел


1
стежте за проблемами, коли немає еквівалентного дня місяця в новому місяці. superuser.com/a/774808/8271
Тім Абел

7

Як зазначено у посиланні: Арифметика дати , це додає один місяць:

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

4
Будьте уважні, якщо ви починаєте з дня, який не має еквівалента: наприклад, 31 серпня + 1 місяць обчислюється як 1 жовтня, оскільки немає 31 вересня
Тім Абел,

0

Я думаю, вам може знадобитися використання міток, оскільки дати зберігаються так само, як числа, які потім відображаються у вибраному вами форматі. Щоб додати місяць, вам знадобиться складний розрахунок, щоб визначити, скільки днів переведе вас до наступного місяця. Сподіваюся, я помиляюся, і хтось має відповідь.


Я також думав про спільне складання алгоритму додавання 31 дати до дати, а потім повернення до першого місяця. Обидва способи здаються надмірно важкими.
trimbletodd

На цьому сайті можуть бути ідеї, які можуть вам допомогти. cpearson.com/excel/datearith.htm
BrianA

Чудова довідка. Схоже, це працює.
trimbletodd

0

FWIW - це рішення, яке я використав, коли важливий місяць і рік:

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

Комірка першого рядка, щоб встановити дату початку як об’єкт дати. Наступні клітини беруть попередню клітинку, отримують кінець місяця, а потім додають день ( A2 = 2016/01/31 + 1). Працює як для електронних таблиць LibreOffice Calc, так і для Google.


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

Потім перетягніть А4 вниз, наскільки ви хочете. Виробляє цей вихід:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.