Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Utilize essa sessão para criar tópicos relacionados a tabelas dinâmicas, formatações condicionais, subtotais, filtros, etc
  • Avatar do usuário
Por DalPai
Posts
#36323
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)
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por DalPai em 03 Set 2018 às 19:45, em um total de 1 vez.
Avatar do usuário
Por Reinaldo
Avatar
#36325
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
Por DalPai
Posts
#36326
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 :(
Avatar do usuário
Por Reinaldo
Avatar
#36328
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
Por DalPai
Posts
#36332
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
Avatar do usuário
Por Reinaldo
Avatar
#36333
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
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord