Por que o Excel trata algumas datas de maneira diferente de outras?

1

Eu tenho um arquivo CSV que contém strings que devem ser interpretadas como datas com minutos, segundos e milissegundos.

Em particular, as entradas são assim:

"07/31/2013 23:59:32.864",otherdata,moredata
"08/01/2013 00:00:02.863",otherdata,moredata

Para 31/7/2013, o Excel decidiu usar o formato "Geral" e exibe o valor como

07/31/2013 23:59:32.864

Isso é o esperado.

No entanto, para 08/01/2013, o Excel usa um formato "Personalizado" de "mm: ss.0" e exibe o valor como

00:02.9

Isso não ajuda. Se eu alterar o formato da célula para "General", o valor se tornará 41282.00003.

Curiosamente, se eu mudar o mês de agosto para julho (como 07/01/2013), o valor exibido agora é

07/01/2013  00:00:03

com um formato "Personalizado" de "dd / mm / aaaa hh: mm".

Como posso impedir o Excel de escolher vários formatos com base no que me parece razões aleatórias e concordar com um formato para exibir essas datas?

Observe que isso tem pouco a ver com dias confusos com o Excel por meses. Uma data 13/08/2013 (onde 8 é claramente o mês) perde seus milissegundos e é exibida como

08/13/2013  23:01:06

com um formato "Personalizado" de "mm: ss.0".

É completamente estranho.

    
por Andrew J. Brehm 07.08.2013 / 12:15

2 respostas

5

Você precisa arrumar suas configurações regionais e seus formatos de data e alinhá-los com a ordem de mês e dia das datas no CSV. Eles não parecem gelar no momento.

41282.00003 é 8 de janeiro de 2013 e não 1º de agosto de 2013.

O Excel tentará interpretar uma data de acordo com as configurações regionais do seu computador. Se as configurações regionais forem DMY e a data a ser interpretada for 31/07/2013, o pedido DMY não funcionará e o Excel interpretará os dados como texto. Isso é o que você vê. Texto que parece um valor de data / hora. Tente formatar esse valor de data / hora aparente de forma diferente. Você verá que não pode, porque é texto.

Mas se a próxima linha de dados tiver 08/01/2013, isso se encaixa muito bem no esquema DMY do cenário regional e será retornado em 8 de janeiro de 2013. Você pode alterar o formato da célula para o formato personalizado

dd/mm/yyyy hh:mm:ss.000

e será exibido como 08/01/2013 00:00:02.863

OvalornacélulaA1éovalordotexto,nãoumadatareal.Oformatodacélulaé"Geral" e nenhuma quantidade de formatação de números mudará sua aparência.

O valor na célula A2 é um valor real de data / hora, formatado com o formato personalizado mencionado acima.

Ao importar datas, tome um cuidado duplo para verificar a ordem do dia e do mês nos dados importados. Ao usar o assistente de importação, você pode especificar em qual ordem os dados de origem estão e todas as datas serão importadas de forma consistente.

Vamos dar uma olhada na segunda data (real). 08/01/2013 00:00:02.863 formatado com "Geral" é exibido como 41282.00003 e formatado com uma data apropriada, como 8 de janeiro de 2013. Bem.

Se você aumentar os decimais para o formato Geral, verá que o número real subjacente é 41282.0000331366 . Este número tem 15 dígitos numéricos.

Formatado como data, você pode editá-lo e alterar o dia de 8 para 7. O resultado será exibido no formato "Geral" como 41281.00003 , mas se você aumentar o número de dígitos exibidos, verá que o number é 41281.00003472220

Huh?

Como assim? Nós subtraímos apenas um dia, então apenas o número antes do ponto decimal deve mudar.

Bem, o Excel tem uma precisão interna de apenas 15 dígitos para qualquer número. Números com mais dígitos serão arredondados ou os últimos dígitos serão substituídos por zeros. Além disso, há um bug bem conhecido no Excel que afeta a precisão dos números em que o limite de 15 dígitos é atingido.

Eu acho que este é um exemplo onde o bug levanta sua cabeça feia.

Quando a parte de data de nosso valor de data / hora for alterada, ela também causará uma reavaliação dos decimais, o que levará a um comportamento de arredondamento e inconsistente após o quarto decimal. Portanto, os dados reais de segundo e milissegundos estarão desativados.

Veja se esta captura de tela ajuda a esclarecer:

OsvaloresnascolunasBaDreferem-seàcolunadereferênciaA.AúnicadiferençaentreA1eA2éumaalteraçãomanualdadatade08/01a07/01(emque01éjaneiro,deacordocomasconfiguraçõesregionaisdeDMY).

Oformato"Geral" mostra ambos os valores com um valor decimal x.0003. Estender os decimais mostra que há uma grande diferença nos números decimais após a quarta casa decimal.

Como o resultado final desejado é um valor que mostra segundos e milissegundos, os decimais após o quarto decimal realmente fazem a diferença e quando o valor é formatado com um formato personalizado que mostra segundos e milissegundos, essa diferença é mostrada na coluna A).

Além disso, observe as três células com números consistindo de apenas 15, 16 e 17 dígitos de 1 e como o Excel simplesmente substitui qualquer dígito após o 15º com um zero, porque não pode exibir uma precisão maior.

    
por 07.08.2013 / 12:57
-2

Solução muito fácil:

  1. Selecione todas as colunas de data.
  2. Selecione o botão geral.
  3. Classifique o número e o número armazenados como texto com cuidado.

  4. Vocêencontrarádadosemnúmeroedatacomo:

  5. convertaoformatodedataemtextoparacolunacomaopçãodelimitadaeemoutrowrite/-etccomomostradonasuadata:

  6. Aplicarafórmuladedatacomo:

  7. Em seguida, cole dados especiais (copiar, clicar e colar).

Seu problema está resolvido.

    
por 29.07.2018 / 09:04