Incompatibilidade de gerenciamento de tipos de data (ano de 2 dígitos) - na ação do usuário copiar / colar


3

Eu acho uma inconsistência estranha ao copiar e colar datas no MS Excel, quando eles têm um ano de 2 dígitos. Eu trabalho em uma máquina Windows 7 Enterprise 64 bit e meu Excel é uma versão de 2010.

DESCRIÇÃO DO PROBLEMA: se eu escrever uma data curta em qualquer aplicativo (digamos o Bloco de Notas), e eu copiar isso para o Excel, o ano será interpretado incorretamente após 2029. Exemplos:

  • Eu escrevo "12/01/29" no bloco de notas e copie e cole este valor no MS Excel: a data será interpretada como "12/01/2029".
  • Eu escrevo "12/01/31" no bloco de notas e copie e cole esse valor no MS Excel: a data será interpretada como "12/01/1931" (em vez de "12/01/1931").

PESQUISA 1 - painel de controle: Após a primeira pesquisa, encontrei uma opção na configuração Painel de Controle / Datas, dizendo que "se um ano for inserido com 2 dígitos, ele será incluído entre 1997 e 2096". Imagem abaixo (está em francês, minha linguagem de sistema, mas o conteúdo é o que eu descrevi):

enter image description here

No entanto, mesmo que essa configuração me leve a esperar uma conversão adequada do caso de teste acima, não é assim.

INVESTIGAÇÃO ADICIONAL - VBA: O VBA geralmente herda as configurações do aplicativo de hospedagem (MS Excel no meu caso), que está herdando a configuração do sistema. Por exemplo, se o idioma do sistema for francês, significa que o mês de "dezembro" é escrito como "dezembro". Então, se eu escrever isso, vai funcionar: myDate = DateValue("11-déc-12"), enquanto se eu escrever isso não vai funcionar: myDate = DateValue("11-dec-12"). Isto é claramente porque o VBA herda a linguagem do sistema, por isso reconhece "décembre" (francês) e não "dezembro" (inglês).

No entanto, se eu escrever isso:

myDate = DateValue("12/01/31")

o valor será interpretado corretamente como 12/01/2031.

MAIS INFORMAÇÕES: digitando manualmente "12/01/31" em uma célula do Excel será devidamente convertido em 2031. Assim, parece que o problema surge apenas em copiar e colar .

MINHA PERGUNTA: Parece que há uma inconsistência entre as configurações. Alguém poderia me levar para o local adequado para corrigir esse problema uma vez para sempre e certifique-se de que a configuração "se um ano for inserido com 2 dígitos, será entre XXXX e YYYY" por favor? Agradeço antecipadamente, não hesite em pedir mais detalhes, se necessário.


Você encontrou esse arquivo de ajuda? office.microsoft.com/en-gb/excel-help/…
freekvd

Sim @freekvd, que é onde eu descobri "Mudar o modo como os dois dígitos são interpretados", que é a solução que eu propus na minha "Pesquisa 1". Não funciona bem: /
Matteo NNZ

Parece ser um bug na função de planilha do DATEVALUE do Excel. Independentemente da configuração de data do Windows, =DATEVALUE("1/1/31") sempre retornará 11324. Mostrada como data, isso resulta em 1-1-1931.
freekvd

@freekvd isso é estranho, se eu colocar um MsgBox myDate Eu vejo a data correta. No entanto, eu tinha dado a dica do VBA apenas para mostrar a inconsistência, mas eu concordo com você que a solução para este rebote não está mentindo lá!
Matteo NNZ
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.