Página 1 de 1

Arrumar data

Enviado: 03 Set 2018 às 19:27
por DalPai
Boa noite!

Tenho uma coluna com 400 datas que estão no formato americano (MM/DD/AAAA) e preciso converter elas para o padrão brasileiro (DD/MM/AAAA).

Utilizei o "Texto para Coluna" para dividir a data em 3 colunas, e juntei elas novamente (no padrão BR) usado a função DATA.

Fiz uma macro desse procedimento, pois tenho que fazer isso quase que todos os dias.

O problema é: por algum motivo o excel inverte o mês com o dia em algumas células.
Exemplo: linhas 11, 32, 51, 52 do arquivo em anexo.

Alguém saberia o motivo? E também a solução? Ou se existe um meio mais prático para fazer isso.

Desde já agradeço

---EDIT---
Descobri algo interessante, mas nao sei dizer exatamento o que significa.
Selecionado a coluna com as datas, e modificando o formato para Texto...as datas que estavam sendo invertidas viram números ( 08/07/2018 -> 43289)

Arrumar data

Enviado: 03 Set 2018 às 19:43
por Reinaldo
Voce utilizou a função texto para colunas delimitado pela "/", correto?
Ao inves disso experimente utiliza-la assim:
Código: Selecionar todos
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 3), TrailingMinusNumbers:=True
    Columns("G:G").EntireColumn.AutoFit
A rotina acima salva a data reformatada na columa G
Para alterar na propria coluna experimente:
Código: Selecionar todos
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 3), TrailingMinusNumbers:=True

Re: Arrumar data

Enviado: 03 Set 2018 às 19:54
por DalPai
Reinaldo escreveu:Voce utilizou a função texto para colunas delimitado pela "/", correto?
Ao inves disso experimente utiliza-la assim:
Código: Selecionar todos
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("G1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 3), TrailingMinusNumbers:=True
    Columns("G:G").EntireColumn.AutoFit
A rotina acima salva a data reformatada na columa G
Para alterar na propria coluna experimente:
Código: Selecionar todos
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 3), TrailingMinusNumbers:=True
Seu código cai no mesmo problema do meu :(

Arrumar data

Enviado: 03 Set 2018 às 20:46
por Reinaldo
Experimente então
Código: Selecionar todos
Sub Text_Data()
Dim x As Integer
For x = 2 To Cells(Cells.Rows.Count, "A").End(xlUp).Row
    If Application.WorksheetFunction.IsNumber(Cells(x, 1)) Then
        Cells(x, "F").Value = DateValue(Format(Cells(x, 1), "mm/dd/yyyy"))
    Else
        Cells(x, "F").Value = CDate(Cells(x, 1))
    End If
Next
End Sub

Re: Arrumar data

Enviado: 03 Set 2018 às 21:42
por DalPai
Reinaldo escreveu:Experimente então
Código: Selecionar todos
Sub Text_Data()
Dim x As Integer
For x = 2 To Cells(Cells.Rows.Count, "A").End(xlUp).Row
    If Application.WorksheetFunction.IsNumber(Cells(x, 1)) Then
        Cells(x, "F").Value = DateValue(Format(Cells(x, 1), "mm/dd/yyyy"))
    Else
        Cells(x, "F").Value = CDate(Cells(x, 1))
    End If
Next
End Sub
O problema não ta sendo o código, e sim o formato da data...
Imagem

Queria mesmo era saber agora é o que significa e o motivo disso estar acontecendo

Arrumar data

Enviado: 03 Set 2018 às 22:11
por Reinaldo
Significa: O excel armazena internamente datas como numeros sequenciais hoje e 43315, a visualização entre barras e uma mascara para adequar ao padrão conhecido.
Ao importar campos com datas, o excel tenta automaticamente adaptar o dado recebido aos dados/valores pre estabelecidos.
Datas no formato americano m/d/yyyy, para dias até 12, via de regra, são confundidos com o formato brasileiro d/m/aaaa e assim são inseridas nosistema,
para dias maiores que 12 o Excel não reconhece como data e insere o dado/valor como texto.
No seu modelo/exemplo pelo que testei funcionou coerentemente, veja na coluna F