Como adicionar um mês até o momento no LibreOffice calc


23

Esta parece ser uma pergunta óbvia.

Eu tenho uma coluna de data e quero criar uma fórmula para aumentá-la em um mês para cada coluna.

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

Como você adiciona um mês a uma data?

Respostas:


16

A resposta atualmente favorecida pula os meses curtos que seguem os longos

Defina A1 = 31/01/2014. Em seguida, o resultado usando = DATA (ANO (A1), MÊS (A1) +1, DIA (A1)) será 03/03/2014, pulando fevereiro.

A abordagem EDATE sugerida acima perde dias

Meses curtos fazem com que o EDATE perca dias por meses sucessivos. Por exemplo, = EDATE (DATE (2014,1,31), 1) produz 28/02/2014, mas a aplicação novamente resulta em 28/03/2014, que não é o último dia de março.

Uma solução que funciona: incrementa meses com o dia definido como zero

Defina o dia como zero e aumente os meses, com um mês de antecedência. Por exemplo, para começar em janeiro, use DATE (2014,2,0) => 2014-01-31 e DATE (2014,3,0) => 2014-02-28, depois DATE (2014,4,0) -> 2014 -03-31 como seria de esperar, logicamente após o último dia de cada mês.

Outras abordagens

É possível fazer ajustes se você quiser o último dia útil do mês ou incrementos de 30 dias sem pular meses, etc. Depende do objetivo.


edatefuncionou para mim sem o problema que você mencionou (Versão: 4.2.7.2)
Tim Abell

1
Tim para ver a edição falhar, coloque na célula C4 = Data (2014,01,31) e coloque em C7 = EDATE (C4,1) e ele mostrará corretamente 2014-02-28. no entanto, coloque agora na célula C8 = EDATE (C7,1) e ele fornecerá o valor errado, 28/03/2014, que não é o último dia de março. Tim, você está vendo o último dia de março neste segundo passo? (Versão 3.5.4.2 - versão atualizada nesta distribuição Debian)

1
Ah, entendo o que você quer dizer agora. Obrigado pelo exemplo claro. Eu esqueço o que estava fazendo agora, mas acho que não cheguei a esse ponto e não segui a sutileza do que você explicou. Ótimo post.
Tim Abell

19
=edate(a1;1)
  • edate retorna a data que é o número especificado de meses após ou antes da data especificada.
  • Primeiro argumento do edate: data de início.
  • Segundo argumento do edate: número do mês. Se negativo, edate calcula a data anterior.

2
nunca teria adivinhado pelo nome! graças :-)
Tim Abell


1
atente para os problemas em que não há dia equivalente do mês no novo mês. superuser.com/a/774808/8271
Tim Abell

7

Conforme fornecido na referência: Data aritmética , isso adiciona um ao mês:

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

4
Beware que se você começar em um dia que não tem equivalente: por exemplo, 31 ago + 1 mês é calculado como 01 de outubro porque não há 31 de setembro
Tim Abell

0

Eu acho que você pode precisar usar etiquetas, pois as datas são armazenadas, assim como os números que são exibidos no formato que você escolher. Para adicionar um mês, você precisará de um cálculo complexo para determinar quantos dias você levará para o próximo mês. Espero que eu esteja errado e alguém tenha uma resposta.


Também pensei em discutir um algoritmo complicado de adicionar 31 dias à data e depois voltar ao primeiro dia do mês. Os dois modos parecem excessivamente difíceis.
trimbletodd

Pode haver algumas idéias neste site que possam ajudá-lo. cpearson.com/excel/datearith.htm
Briana

Ótima referência. Parece que funciona.
trimbletodd

0

FWIW, esta é a solução que usei onde o mês e o ano são importantes:

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

Primeira célula da linha para definir a data de início como um objeto de data. As células seguintes pegam a célula anterior, fecham o mês e depois adicionam um dia ( A2 = 2016/01/31 + 1). Funciona no LibreOffice Calc e no Google Spreadsheets.


0

Para ano, mês, dia com incremento de um mês, mesmo dia do mês (como o último dia contabilizando os anos bissextos):

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

Em seguida, arraste A4 para baixo o quanto quiser. Produz esta saída:

01/31/11
02/28/11
03/31/11
...
02/29/12
03/31/12
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.