Como adiciono 1 ano a uma data específica depois de essa data ser passada?

1

Eu tenho uma planilha do Excel que lista nossas assinaturas atuais. Eu tenho uma coluna com a data em que se inscreveram e depois tenho outra coluna para a data de renovação. Atualmente eu tenho que atualizar manualmente a data de renovação para o próximo ano, uma vez que a data de renovação passe e um novo prazo comece. Existe uma maneira / fórmula para alterar automaticamente o ano / adicionar 1 ano?

):

Assinatura Base - Data assinada em 1/11/2014 - Data de renovação em 11/1/2016 **

** procurando ter essa alteração para 1/11/2017

    
por rkUser 04.02.2016 / 19:26

4 respostas

1

Inclua a seguinte Macro de eventos na área de código da planilha:

Private Sub Worksheet_Activate()
   Dim N As Long, r As Range, rng As Range
   Dim d As Date
   N = Cells(Rows.Count, "G").End(xlUp).Row
   Set rng = Range("G3:G" & N)

   For Each r In rng
      If IsDate(r.Value) Then
         d = r.Value
         If d < Date Then
            r.Value = DateSerial(Year(d) + 1, Month(d), Day(d))
         End If
      End If
   Next r
End Sub

Sempre que a planilha for ativada, a macro examinará todas as datas na coluna G a partir de G3 . Se a data for "obsoleta", a data será adiantada em um ano.

Por ser um código de planilha, é muito fácil de instalar e usar automaticamente:

  1. clique com o botão direito do mouse no nome da guia próximo à parte inferior da janela do Excel
  2. selecione Exibir código - isso abre uma janela do VBE
  3. cole o material e feche a janela do VBE

Se você tiver alguma dúvida, tente primeiro em uma planilha de teste.

Se você salvar a pasta de trabalho, a macro será salva com ela. Se você estiver usando uma versão do Excel posterior a 2003, deverá salvar o arquivo como .xlsm em vez de .xlsx

Para remover a macro:

  1. abrir as janelas do VBE como acima
  2. limpe o código
  3. feche a janela do VBE

Para saber mais sobre macros em geral, consulte:

link

e

link

Para saber mais sobre macros de eventos (código da planilha), consulte:

link

As macros devem estar ativadas para que isso funcione!

    
por 04.02.2016 / 19:57
2

Se você preferir (ou precisar da mesma) para não usar macros, uma dessas fórmulas parece funcionar para mim, dependendo do comportamento exato que você preferir ...

Se você preferir que a data mude de 1/11/16 para 1/11/17 em 1/11/15 ( na data de renovação ), use esta fórmula para células na coluna G:

=(DATE(YEAR(F3)+FLOOR(YEARFRAC(F3,TODAY()),1),MONTH(F3),DAY(F3)))

Se você preferir que a data mude de 1/11/16 para 1/11/17 em 1/12/15 ( a data após a data de renovação ), use esta fórmula:

=(DATE(YEAR(F3)+FLOOR(YEARFRAC(F3+1,TODAY()),1),MONTH(F3),DAY(F3)))

A parte FLOOR(YEARFRAC(F3,TODAY()),1) da fórmula determina o número de anos completos desde a data de assinatura (no seu exemplo, isso seria dois anos). O restante da fórmula adiciona isso à data assinada. Como um possível bônus, você também pode usar essa parte da fórmula em outra coluna para calcular e mostrar quantos anos completos eles assinaram - talvez para enviar e-mails de agradecimento ou mesmo presentes para assinantes de longa data agora e então ... :-P

    
por 04.02.2016 / 21:16
0

Você pode tentar a função Data:

=IF(TODAY()>(DATE(YEAR(F3)+1,MONTH(F3),DAY(F3))),DATE(YEAR(F3)+1,MONTH(F3),DAY(F3)),"")
    
por 04.02.2016 / 19:33
-2

Na célula G3 use a fórmula =F3+365 , que retornará a data de F3 adicionada por um ano.

    
por 04.02.2016 / 19:31