none
Comparar datas e escrever o resultado em outra coluna RRS feed

  • Pergunta

  • Peço ajuda para criar um código em VBA de comparação de datas.

    Tenho datas da linha 1 a linha 20 nas "C" e "D".

    Gostaria de comparar as colunas "C" e "D" e escrever na coluna "A"  o resultado da maior data (data mais recente).

    Agradeço desde já pela ajuda.

    abc,

    Claudio

    domingo, 28 de janeiro de 2018 14:28

Todas as Respostas

  • Olá, por que fazer isso por VBA, fórmula não atende?

    Bastaria:

    =MÁXIMO(C1:D1)

    Copiar e colar para todas as linhas desejadas.


    Filipe Magno

    domingo, 28 de janeiro de 2018 15:11
  • Filipe, desde já agradeço o retorno. Utilizando função eu sei fazer, tb poderia ter utilizado if.

    que eu quero realmente é fazer isto utilizando o FOR NEXT e escrevendo a data mais recente na coluna A por meio do VBA.

    E no caso específico, forçar que as células da coluna A onde eu fosse escrever, serem forçosamente um campo do tipo DATA.

    Estou dando meus primeiros passos no VBA, no conhecimento das funções eu já evolui razoavelmente bem.

    Eu sei que devo utilizar a função CELLS e definir uma variável para alterar a linha, mas não entendi como faço para construir a comparação,  como variar a comparação e nem como escrever o resultado da comparação na células da coluna A .

    Se puder me ajudar nesse código eu agradeço muito.

    E também não entendi porque esse post está com variação no tamanho da fonte.

    Abc,

    Claudio

    domingo, 28 de janeiro de 2018 23:59
  • Olá, boa noite.

    Segue uma forma simples de fazer:

    Dim i As Long, lFim As Long
    Dim ws As Worksheet
    
    lFim = 20  'Linha final
    
    Set ws = ActiveSheet
    For i = 1 To lFim
    
        If ws.Cells(i, 3).Value > ws.Cells(i, 4).Value Then
            ws.Cells(i, 1).Value = ws.Cells(i, 3).Value
        Else
            ws.Cells(i, 1).Value = ws.Cells(i, 4).Value
        End If
    
    Next
    
    ws.Range(Cells(1, 1), Cells(1, lFim)).NumberFormat = "dd/mm/yy"

    É uma forma bem simples, daria para incrementar bastante. Mas se tiver dúvida é só perguntar.

    Abraço.


    Filipe Magno

    terça-feira, 30 de janeiro de 2018 00:47
  • Filipe, muito obrigado pela ajuda.

    Aconteceu um probleminha, só a primeira célula na coluna A obedeceu ao formato solicitado.

    terça-feira, 30 de janeiro de 2018 10:50
  • Olá, bom dia!

    Desculpe, foi erro meu. Troque:

    ws.Range(Cells(1, 1), Cells(1, lFim)).NumberFormat = "dd/mm/yy"

    por:

    ws.Range(Cells(1, 1), Cells(lFim,1)).NumberFormat = "dd/mm/yy"

    Abraço.


    Filipe Magno

    terça-feira, 30 de janeiro de 2018 10:52
  • Filipe,

    Obrigado pelo retorno, funcionou.

    O engraçado é que eu havia feito isso antes e não funcionou. Pelo menos vi que meu raciocínio estava correto, porque era só fazer a variável pegar o incremento na linha.

    De qualquer forma agradeço pela atenção.

    Como estou evoluindo posteriormente irei postar uma dúvida sobre array e for next dentro de outro for next.

    Abc,

    Claudio

    quarta-feira, 31 de janeiro de 2018 14:37