O Excel altera datas onde o dia é menor do que o mês (e.g 2 de abril), o inverso (e.g 4 de fevereiro)

StackOverflow https://stackoverflow.com//questions/25077178

  •  02-01-2020
  •  | 
  •  

Pergunta

Estou tendo alguns toruble com o excel e datas.A situação é a seguinte:Nós temos um relatório mensal com o número de abas que a macro importações na central de uma folha de cálculo, tem cerca de 120 colunas.Depois de importar, eu preciso adicionar algumas fórmulas nas últimas colunas que são relevantes para os dados, mas não incluídas nos dados, e um deles é o período (número de nós trabalhar para um cliente com o ano, começando em 1º de abril e 13 períodos de 4 semanas no ano).Para realizar isso, eu tenho uma folha separada com todas as datas na coluna A, em seguida, períodos e outros dados nas colunas a seguir.Um simples Procv procura até a data e retorna o período das ondas.

No entanto, algumas das datas vir armazenados como texto (e, portanto, o procv tem #N/d), correção simples, colar especial - adicionar uma célula em branco e pronto ele funciona.E isso não funciona se eu fizer isso manualmente.Mas este destina-se a fazer todo o trabalho para o usuário, de modo que eu tentei fazê-lo através de programação conforme código abaixo:

'Sheets("dates and Periods").Activate
'Range("P1").Copy
'Sheets("Data").Activate
'Range(Cells(2, 5), Cells(lastrow, 5)).PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
'Range(Cells(2, 5), Cells(lastrow, 5)).NumberFormat = "dd/mm/yyyy"

Recebo a célula em branco da "Datas e Períodos" porque eu sei que vai ser definitivamente em branco.

Agora, quando eu executar esse código, ele funciona para a maioria dos valores.No entanto, para todas as datas na coluna E quando o dia é menor do que o mês, e.g 1º de abril, dia 4 de Maio, etc, muda o dia e o mês todo, e isso não é a formatação, alterando longa data eu posso ver que tem alterado os dados de volta.

Existe uma maneira de contornar isso?Eu olhei para a solução de todos os problemas que eu poderia encontrar ao procurar tinham a ver com o sistema de datas 1904 ou com formatação.

Qualquer ajuda seria apreciada.

Solução:[quebrá-lo em partes e colocar de volta juntos]

For Each cell In Range(Cells(2, 5), Cells(lastrow, 5))

cell.Value = Mid(cell, 4, 2) & "/" & Left(cell, 2) & "/" & Right(cell, 4)

Next cell
Foi útil?

Solução

eu tive esse problema várias vezes.a resposta é geralmente específicos para a solução, mas você pode tentar converter a data para uma cadeia de caracteres no formato dd-mmm-aaaa formato e, em seguida, volta novamente.

Outras dicas

Quando você entrar em algo que se parece com uma data em uma célula do Excel, ele irá analisá-lo de acordo com as Configurações Regionais do Windows.Cadeias de caracteres que não se encaixam inseridas como texto, cadeias de caracteres que não se transformaram em Excel datas.Este último, normalmente, não vai ser o mesmo da data prevista.

Gostaria de sugerir para corrigir isto, durante o processo de importação.Exatamente como fazer isso depende de especificações que você não incluído, mas o processo é a utilização de Dados/processo de Importação e vá até o Assistente de Importação de Texto.Esse assistente permite que você especifique o formato para cada coluna;incluindo o formato de data para E.Que irá garantir que todas as datas estão devidamente compreendida pelo Excel como sendo de datas.Assim, se a entrada de formato de data é MDY, você deve especificar MDA;e o Excel armazenar adequadamente e, em seguida, exibi-lo em sua configuração padrão, ou em qualquer maneira que você formato de coluna.

Outra opção, se for possível, seria alterar o gerador de relatório, de modo que gera as datas que estão no mesmo formato como o formato de data abreviada de suas Configurações Regionais do Windows

Eu importar um grande número de arquivos enviados para mim em bases de dados e este é certamente um problema.O problema não é causado por dados incorretos, má formatação, ou qualquer coisa, mas simplesmente um erro no excel (eu acredito Microsoft chamá-lo de um recurso), onde ele tenta entender datas no formato Americano e automaticamente 'corrige' nada encontra.É pior porque se a uma data não funciona no formato Americano, em seguida, converte-lo em um arquivo de texto deixando-o com algumas datas formatado de uma maneira, outros de outra.

A única solução que eu achei é para alterar os dados na planilha de origem, de modo que o Excel não pode entendê-lo como uma data em qualquer forma e, em seguida, importá-lo e, em seguida, convertê-lo de volta, uma enorme phaff.Microsoft por favor resolver isso, é desperdiçar tanto tempo com a programação de soluções!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top