Converter data comp...
 
Notifications
Clear all

Converter data completa em simples

10 Posts
4 Usuários
0 Reactions
3,584 Visualizações
(@amanda-araujo)
Posts: 1
New Member
Topic starter
 

Olá,

Estou com uma dúvida simples de conversão de datas:

* Ao exportar de determinado programa uma base de dados para o Excel, os campos de data vão com o formato dd/mm/aaaa hh:mm (exemplo:19/10/2011 21:27);
* Mesmo configurando a celula de destino para data (dd/mm/aaaa) , as informações de hora não "somem", ficam na memória da célula;
* Se uso alguma fórmula de extração de dados (ext.texto, esquerda, etc.) o formato de data não é reconhecido em uma tabela dinâmica, dificultando a classificação dos dados.

Deve haver uma forma simples de corrigir isso.

Alguém pode me ajudar?

 
Postado : 04/07/2012 11:31 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite amanda

Coloque a macro num Módulo e atribua a um botão.

Sub SóData()
Dim LR, i As Long
LR = Range("D" & Rows.Count).End(xlUp).Row
For i = 1 To LR
        With Range("D" & i)
        .NumberFormat = "dd/mm/yyyy"
        .Value = Int(.Value)
        End With
Next i
End Sub

Altere a coluna "D" para a coluna que vc vai usar.

Créditos do código para Osvaldomp

Se a resposta foi útil, clique na mãozinha que fica ao lado da ferramenta Citar.

Dê retorno.

Um abraço.

 
Postado : 04/07/2012 3:13 pm
(@badamceva)
Posts: 107
Estimable Member
 

Tenho o mesmo problema..

Para converter a data que esta em hora tenho que faze uma baita formatação faço o seguinte

Primeiro transformo o data que esta em Dias e horas para texto depois jogo a formula da esquerda conto 5 casas e depois formato para data para só sair a data sem a hora.

Voces tem um meio mais facil para tirar a hora e deixar só a data ?

 
Postado : 05/07/2012 9:30 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Isso ocorre pelo modo como o excel trata/armazena data e horas, numeração sequencial, onde o numero inteiro representa a qtde de dias decorridos após 1/1/1900 e os valores depois da virgula representam o numero de horas decorridas do dia.
Por exemplo: 19/10/2011 21:27 e armazenado/considerado como 40835,89; já 19/10/2011 é 40835,00.
Qdo em uma comparação ou tabela ou ordem por data, apesar de serem do mesmo dia, não são iguais.
O codigo disponibilizado pelo Edson (topico acima), faz essa "correção" na propria celula; pois "pega" somente o valor inteiro do numero.

Por formula tb é possivel efetuar essa "correção". Supondo que sua data esteja em A1 então em B1 coloque =INT(A1) e formate como data

 
Postado : 05/07/2012 10:59 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pessoal, eu tenho um conhecimento mais ou menos de macros, mas eu prefiro sempre usar fórmulas/funções a usar macros, pq macros estragam o arquivo (do meu ponto de vista) além de dificultar sua usabilidade e matar performance de recálculo.
Portanto, vamos ao que interessa, sem macros.

Eu usei a abusei de 3 funções do Excel (procurar(), localizar(), esquerda(), direita(), ext.texto(), data(), hora()), especificamente para criar este modelo q pode ser utilizado em qualquer célula que tem uma data que não é enxergada como data pelo excel, por qualquer motivo. Desde que este texto de data pareça uma data no formato d/m/aaaa h:mm, isso aqui vai funcionar.
Entenda, se o dia tiver 1 ou 2 algarismos, se o mes tiver 1 ou 2 algarismos se a hora tiver 1 ou 2 algarismos, a fórmula do arquivo anexo vai sempre funcionar.

Como eu fiz num Excel em inglês, a fórmula que eu criei foi esta:

=DATE(MID(A3,SEARCH("/",A3,SEARCH("/",A3,1)+1)+1,4),MID(A3,SEARCH("/",A3,1)+1,SEARCH("/",A3,SEARCH("/",A3,1)+1)-SEARCH("/",A3,1)-1),LEFT(A3,SEARCH("/",A3,1)-1))+TIME(MID(A3,SEARCH(" ",A3)+1,SEARCH(":",A3,1)-SEARCH(" ",A3,1)-1),RIGHT(A3,LEN(A3)-SEARCH(":",A3,1)),0)

Se quiserem em português:

=DATA(EXT.TEXTO(A3;LOCALIZAR("/";A3;LOCALIZAR("/";A3;1)+1)+1;4);EXT.TEXTO(A3;LOCALIZAR("/";A3;1)+1;LOCALIZAR("/";A3;LOCALIZAR("/";A3;1)+1)-LOCALIZAR("/";A3;1)-1);ESQUERDA(A3;LOCALIZAR("/";A3;1)-1))+TEMPO(EXT.TEXTO(A3;LOCALIZAR(" ";A3)+1;LOCALIZAR(":";A3;1)-LOCALIZAR(" ";A3;1)-1);DIREITA(A3;NÚM.CARACT(A3)-LOCALIZAR(":";A3;1));0)

Para vcs verem a fórmula em ação, favor baixarem o anexo :)

 
Postado : 12/07/2012 1:20 am
(@elyanaa)
Posts: 0
New Member
 

Pessoal sou nova tanto no forum quanto em VBA
peguei o código entendi que ele localiza a coluna e vai fazendo um Loop para converter. mas na minha planilha quando chega no item

.Value = Int(.Value)

Apresenta erro em tempo de execução 13 - tipos incompativeis.

Por favor poderiam me ajudar?

Desde já agradeço muito.

Sub SóData()
Dim LR, i As Long
LR = Range("AA" & Rows.Count).End(xlUp).Row
For i = 1 To LR
With Range("AA" & i)
.NumberFormat = "dd/mm/yyyy"
.Value = Int(.Value)

End With
Next i
End Sub

 
Postado : 18/02/2016 3:10 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tudo depende dos dados em sua planilha. Disponibilize um modelo com esses dados.

 
Postado : 19/02/2016 7:27 am
(@elyanaa)
Posts: 0
New Member
 

Olá Reinaldo, muito obrigada.

Segue a planilha!!!

Mais uma vez obrigada e tenha boa tarde!!!

Abraços,

Eliana

 
Postado : 19/02/2016 10:20 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Na rotina proposta altere o valor/numero da linha inicial de i=1 para i=2; pois a primeira linha e titulo/texto gerando assim o erro

Sub SData()
Dim LR As Long, i As Long
LR = Range("AA" & Rows.Count).End(xlUp).Row
For i = 2 To LR
With Range("AA" & i)
    .NumberFormat = "dd/mm/yyyy"
    .Value = Int(.Value)
End With
Next i
End Sub
 
Postado : 19/02/2016 11:07 am
(@elyanaa)
Posts: 0
New Member
 

Muito bom Reinaldo, verdade, agora entendi o erro!!!

Muito obrigada!! Funcionou perfeitamente!

Abraços, :P

 
Postado : 19/02/2016 1:40 pm