Jak dodać miesiąc do teraz w LibreOffice calc

23

To wydaje się oczywiste pytanie.

Mam kolumnę z datą i chcę utworzyć formułę, aby zwiększyć ją o jeden miesiąc dla każdej kolumny.

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

Jak dodać miesiąc do daty?

trimbletodd
źródło

Odpowiedzi:

16

Obecnie preferowana odpowiedź pominie krótkie miesiące, które następują po długich

Ustaw A1 = 31.01.2014. Następnie wynikiem = = DATA (ROK (A1), MIESIĄC (A1) +1, DZIEŃ (A1)) będzie 2014-03-03, pomijając luty.

Sugerowane powyżej podejście EDATE traci dni

Krótkie miesiące powodują, że EDATE upuszcza dni na kolejne miesiące. Np. = EDYCJA (DATA (2014,1,31), 1) daje 28.02.2014, ale ponowne zastosowanie powoduje wyniki 28.03.2014, co nie jest ostatnim dniem marca.

Rozwiązanie, które działa: przyrost miesięcy z dniem ustawionym na zero

Ustaw dzień na zero i zwiększaj miesiące, wyprzedzając o miesiąc. Np. Aby rozpocząć w styczniu użyj DATE (2014,2,0) => 2014-01-31, a następnie DATE (2014,3,0) => 2014-02-28, a następnie DATE (2014,4,0) -> 2014 -03-31, jak można się spodziewać, logicznie śledząc ostatni dzień każdego miesiąca.

Inne podejścia

Korekty można wprowadzić, jeśli chcesz mieć ostatni dzień roboczy w miesiącu lub przyrosty o 30 dni, nie pomijając miesięcy itp. Zależy od celu.


źródło
edatepracował dla mnie bez problemu, o którym wspomniałeś (Wersja: 4.2.7.2)
Tim Abell
1
Czas, aby zobaczyć, że edycja nie powiodła się, umieść w komórce C4 = Data (2014,01,31) i umieść w C7 = EDYCJA (C4,1) i poprawnie wyświetli 28.02.2014. jednak teraz umieść w komórce C8 = EDYCJA (C7,1), a wartość ta będzie niepoprawna, 2014-03-28, co nie jest ostatnim dniem marca. Tim, czy widzisz ostatni dzień marca na tym drugim kroku? (Wersja 3.5.4.2 - zaktualizowana wersja tej dystrybucji Debiana)
1
Ach, rozumiem, co masz na myśli teraz. Dzięki za jasny przykład. Zapomniałem, co teraz robiłem, ale myślę, że nie trafiłem w ten przypadek i nie zastosowałem się do subtelności tego, co wyjaśniłeś. Wspaniały post.
Tim Abell,
19
=edate(a1;1)
  • edate zwraca datę, która jest określoną liczbą miesięcy po lub przed określoną datą.
  • Pierwszy argument edycji: data rozpoczęcia.
  • Drugi argument edycji: liczba miesięcy. Jeśli ujemna, edate oblicza datę wcześniejszą.
Tarik FDIL
źródło
2
nigdy by nie zgadł po imieniu! dzięki :-)
Tim Abell
dokumentacja help.libreoffice.org/Calc/EDATE
Tim Abell
1
uważaj na problemy, w których nie ma równoważnego dnia miesiąca w nowym miesiącu. superuser.com/a/774808/8271
Tim Abell
7

Jak podano w odnośniku: Data Arytmetyka , dodaje to jeden do miesiąca:

=DATE(YEAR(A1), MONTH(A1)+1, DAY(A1))
trimbletodd
źródło
4
Uważaj, jeśli zaczynasz w dniu, który nie ma odpowiednika: np. 31 sierpnia + 1 miesiąc jest liczony jako 1 października, ponieważ nie ma 31 września
Tim Abell
0

Myślę, że może być konieczne użycie etykiet, ponieważ daty są przechowywane tak jak liczby, które są następnie wyświetlane w wybranym przez Ciebie formacie. Aby dodać miesiąc, potrzebujesz skomplikowanych obliczeń, aby określić, ile dni zabierze Cię do następnego miesiąca. Mam nadzieję, że się mylę i ktoś ma odpowiedź.

BrianA
źródło
Pomyślałem także o połączeniu skomplikowanego algorytmu dodania 31 dni do daty, a następnie powrotu do pierwszego miesiąca. Oba sposoby wydają się zbyt trudne.
trimbletodd
Na tej stronie mogą znajdować się pomysły, które mogą ci pomóc. cpearson.com/excel/datearith.htm
BrianA
Świetne referencje. Wygląda na to, że to działa.
trimbletodd
0

FWIW to rozwiązanie, z którego korzystałem tam, gdzie liczy się miesiąc i rok:

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

Komórka pierwszego rzędu, aby ustawić datę początkową jako obiekt daty. Następujące komórki weź poprzednią komórkę, uzyskaj koniec miesiąca, a następnie dodaj dzień ( A2 = 2016/01/31 + 1). Działa zarówno z LibreOffice Calc, jak i Arkuszami kalkulacyjnymi Google.

Thien
źródło
0

Dla roku, miesiąca, dnia przyrostu o jeden miesiąc, tego samego dnia miesiąca (podobnie jak ostatni dzień dla lat przestępnych):

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

Następnie przeciągnij A4 w dół tak daleko, jak chcesz. Daje to wyjście:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
Matt Kneiser
źródło