CONVERTE DATAS DOS EUA EM DATAS DO REINO UNIDO EM EXCEL / CSV
(você não quer mudar suas configurações de localidade)
Este é um processo de 2 etapas:
-
Para parar o Excel ao tentar converter automaticamente algumas datas para o formato do Reino Unido e, em seguida, atrapalhar a conversão, no Excel, destaque a coluna e vá para Dados > Texto para colunas.
- Selecione Delimitado, Próximo
- Limpar todas as caixas de marcação Delimitador, Próximo
- Selecione o tipo de dados de "Texto", Próximo
Não tente definir apenas pelo menu de formatação (clique com o botão direito do mouse no formato de células), isso não funcionará.
Não selecione Data no "Text to columns", pois isso converterá as datas nos EUA usando as configurações do Reino Unido, use "Texto"
[Veja também a resposta do dunxd para importar csvs também. Isso também funcionará se importado como txt.]
2. Em uma coluna de reposição próxima, copie a seguinte fórmula. Substitua as referências a F2 pela sua célula inicial. Formate a coluna em qualquer formato de data escolhido.
= DATEVALUE (CONCATENATE ((SE (MID (F2,4,1)="/", MID (F2,3,1), SE (MID (F2,2,1)="/", MID ( F2,3,2), IF (MID (F2,6,1)="/", MID (F2,4,2), MID (F2,4,1))))), "/", IFERROR ( (SE (SEARCH ("/", ESQUERDA (F2,2)), ESQUERDA (F2,1), ESQUERDA (F2,2))), ESQUERDA (F2,2)), "/", IF (ISERR (FIND ("/", DIREITA (F2,3), 1)), DIREITA (F2,4), DIREITA (F2,2))))
Observação: isso deve funcionar com datas nos seguintes formatos:
- 1/1/14
- 01/1/14
- 01/01/14
- 01/01/14
- 1/1/2014
- 01/01/2014
- 01/01/2014
- 01/01/2014
Se a sua data não estiver separada por "/" s, substitua esse delimitador na fórmula acima.
Espero que ajude.
ATUALIZAÇÃO 17-2-2014
Conforme solicitado, um resumo:
Datevalue e Concatenate criam a string final no formato de data do Reino Unido, portanto, para a parte interessante:
a. Receba o dia dos EUA (valor médio)
((IF (MID (F2,4,1)="/", MID (F2,3,1), IF (MID (F2,2,1)="/", MID (F2,3, 2), IF (MID (F2,6,1)="/", MID (F2,4,2), MID (F2,4,1)))))
A parte mais complicada. Não temos certeza do formato da data. Sabemos que haverá dois "/" em algum lugar, mas precisamos encontrar onde. A parte mais complicada é em um dado como 1/1/10 o segundo "/" pode ser tão cedo quanto o 4º chr, onde em uma data como 10/10/10 o primeiro "/" é o terceiro, onde o o segundo é o sexto chr. Precisamos de uma maneira de distinguir o primeiro e o segundo "/". É uma sorte que um formato '1/1 /' seja a única maneira de um "/" ser o 4º chr, então podemos usar isso:
- Se "/" for o 4º chr exato (ou seja, d e m será único chr),
retorne o terceiro chr como o valor do dia dos EUA.
- Se não (significando que deve haver pelo menos um número 2chr nos EUA
dia ou mês), se o 2º chr for um "/", retorne o 3º e 4º
chr como o valor do dia dos EUA.
- Se não, se o sexto chr for um "/" (significando que a data deve ser 2 duplas
por dia e mês, ou seja. '10 / 10 / '), retorne o 4 & 5º dia como dia dos EUA
valor, caso contrário, retornar apenas o quarto chr como o valor do dia dos EUA.
b. Obtenha o mês dos EUA (valor à esquerda)
IFERROR ((SE (SEARCH ("/", ESQUERDA (F2,2)), ESQUERDA (F2,1), ESQUERDA (F2,2))), ESQUERDA (F2,2))
Bastante simples,
- Se "/" existir no lado esquerdo 2 chr da string, retorne apenas o 1º chr
- se não, retorne os 2 primeiros chr
- se o erro for o mesmo que não encontrar "/", retorne também os 2 primeiros chr
c. Obtenha o ano (valor correto)
SE (ISERR (FIND ("/", DIREITA (F2,3), 1)), DIREITA (F2,4), DIREITA (F2,2))
Simples,
- se "/" existir nos últimos 3 chr da string, retorne os últimos 2 chr, se não retornar na última 4 chr, (4 chr ano ou 2 chr ano).
Espero que isso ajude.