Notifications
Clear all

Conversão de Data

6 Posts
3 Usuários
0 Reactions
2,138 Visualizações
(@emoreira)
Posts: 9
Active Member
Topic starter
 

Boa tarde a todos,

Desde já agradeço o apoio. Gostaria e sabe se existe alguma forma para converter um formato de uma coluna de AAAA-MM-DD 00:00:00.0 para DD/MM/YYYY 00:00:00

Anexo uma planilha exemplo aonde na coluna A estáa data no formato original e na coluna B como deveria ficar após a conversão.

Abraços!!!

 
Postado : 10/11/2017 12:00 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Use uma formula via VBA.

Não testado!!

Sub AleVBA_26522()
Dim rRange As Range
Set rRange = Range("A1", Range("A65536").End(xlUp))
    With rRange
         .EntireColumn.Insert
         .Offset(0, -1).FormulaR1C1 = _
         "=VALUE(MID(RC[1],9,2)&""/""&MID(RC[1],6,2)&""/""&LEFT(RC[1],2))"
         .Offset(0, -1) = .Offset(0, -1).Value
         .Offset(0, -1).NumberFormat = "dd/mm/yyyy"
         .EntireColumn.Delete
    End With
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/11/2017 12:38 pm
(@emoreira)
Posts: 9
Active Member
Topic starter
 

A data foi convertida, porém o Ano ficou como 2020 ao invés de 2017 e as horas foram suprimidas.

 
Postado : 10/11/2017 12:50 pm
(@skulden)
Posts: 170
Estimable Member
 

Não acho que seja necessário usar código pra isso, até porquê no código se é aplicado a mesma lógica de aplicar uma fórmula direto...

Enfim, cole isso em B2 e copie para o resto.

=DATA.VALOR(EXT.TEXTO(A2;LOCALIZAR(" ";A2)-2;2)&"/"&EXT.TEXTO(A2;LOCALIZAR("-";A2)+1;2)&"/"&ESQUERDA(A2;4)&EXT.TEXTO(A2;LOCALIZAR(" ";A2);9))

Ela será consistente se a data vier sempre desta maneira.

Se a resposta lhe foi útil, clique no joinha!

 
Postado : 10/11/2017 12:54 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente assim.

Sub AleVBA_26522()
Dim rRange As Range
Set rRange = Range("A1", Range("A65536").End(xlUp))
    With rRange
         .EntireColumn.Insert
         .Offset(0, -1).FormulaR1C1 = "=DATEVALUE(MID(RC[1],SEARCH("" "",RC[1])-2,2)&""/""&MID(RC[1],SEARCH(""-"",RC[1])+1,2)&""/""&LEFT(RC[1],4)&MID(RC[1],SEARCH("" "",RC[1]),9))"
         .Offset(0, -1) = .Offset(0, -1).Value
         .Offset(0, -1).NumberFormat = "dd/mm/yyyy"
         .EntireColumn.Delete
    End With
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/11/2017 1:33 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Me parece que a proposta do colega Skulden tambem não considera a hora. Considerando essa proposta pode ser utilizada assim:

=DATA.VALOR(EXT.TEXTO(A2;LOCALIZAR(" ";A2)-2;2)&"/"&EXT.TEXTO(A2;LOCALIZAR("-";A2)+1;2)&"/"&ESQUERDA(A2;4)&EXT.TEXTO(A2;LOCALIZAR(" ";A2);9))+VALOR.TEMPO((EXT.TEXTO(A2;12;8)))

Se preferir utilizar VBA

Sub AlteraData()
Dim rRow As Integer
Dim Dts As String, Hrs As String

For rRow = 2 To Cells(Cells.Rows.Count, "A").End(xlUp).Row
Dts = Left(Cells(rRow, 1).Value, 19): Hrs = Mid(Cells(rRow, 1).Value, 12, 8)
    Range("D" & rRow) = VBA.DateValue(Dts) + VBA.TimeValue(Hrs)
Next
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/11/2017 1:41 pm