Extrai data com padrão aleatório no excel celular

0

Você tem uma abordagem mais simples ou generalizada na extração / formatação de uma célula do Excel no formato B. A coluna A tem padrões aleatórios, como mostrado na coluna A.

A                      B
16/06/2009            6/16/2009
11/6/2009             6/11/2009
29/10/2009 13:12:51   10/29/2009 13:12:51
3/12/2009 9:38        12/3/2009  9:38

Eu tentei esta solução, mas isso não funciona com o segundo caso.

B = MID($A1,4,2) & "/" & MID($A1,1,2) & "/" & MID($A1,7,4)

Além disso, as macros não são possíveis no meu caso. Estou limitado a funções nativas do Excel. Obrigado.

EDIT 1: atualizei a pergunta para abordar novos padrões que acabei de aprender com os dados. Desculpe.

EDIT 2: Eu encontrei a solução, veja a resposta # 2. Foi força bruta, mas funciona em todos os casos.

    
por rdagumampan 24.08.2016 / 16:15

2 respostas

1

Digamos que temos algumas datas na coluna A que são realmente Texto no formato dd / mm / aaaa.

Em B1 digite:

=DATE(RIGHT(A1,4),TRIM(MID(SUBSTITUTE($A1,"/",REPT(" ",999)),1000,999)),LEFT(A1,FIND("/",A1)-1))

e copie para baixo. Em seguida, aplique o formato apropriado à coluna B :

Esta fórmula processará corretamente as datas na coluna A com os seguintes formatos:

  • d / m / aaaa
  • dd / m / aaaa
  • d / mm / aaaa
  • dd / mm / aaaa

EDIT # 1:

Se os dados na coluna A forem verdadeiras Datas do Excel, use isso em B1 :

=DATE(YEAR(A1),MONTH(A1),DAY(A1))
    
por 24.08.2016 / 16:44
0

dormiu e tomou algumas xícaras de café esta manhã e eu consegui descobrir isso. sua combinação de suas entradas e leituras que eu tinha.

Fórmula representada por essas células:

E2 = 27/06/2016 08:00:00
F2 = FIND("/",$E2) -> 3 the first /
G2 = FIND("/",$E2,4) -> 6 the second /
H2 = IFERROR(FIND(" ",$E2,4),0) -> 11 any presence of " " space
I2 = NUMBERVALUE(MID($E2,$F2+1,($G2-$F2)-1)) -> 6 month
J2 = NUMBERVALUE(MID($E2,1,$F2-1)) -> 27 day
K2 = NUMBERVALUE(MID($E2,$G2+1,4)) -> 2016 year
L2 = IF(H2=0,"N", "Y") -> Y time present
M2 = IF(H2=0,"00:00:00",RIGHT($E2,LEN($E2)-$H2)) -> 08:00:00 time
N2 = I2 &"/"& J2 &"/"& K2 &" "& M2 -> 6/27/2016 08:00:00 final results
  1. No excel, copiei toda a coluna e colei no bloco de notas.
  2. Formate a data (ex. E2), exclua todas as linhas e formate como texto.
  3. Cole todas as linhas do bloco de notas na coluna E2. Isso forçou a coluna a ser interpretada como texto pelo Excel! fck
  4. Então eu tive a fórmula, eu os separei para testar se tudo funciona para todos os casos.

Eu compartilhei meus resultados aqui

    
por 25.08.2016 / 03:52