Excel change les dates où le jour est inférieur au mois (par exemple le 2 avril) au verso (par exemple 4 février)

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

  •  02-01-2020
  •  | 
  •  

Question

J'ai un peu de toruble avec Excel et dates. La situation est la suivante: Nous avons un rapport mensuel avec un nombre d'onglets que la macro importe dans une feuille de calcul centrale, elle compte environ 120 colonnes. Après l'importation, j'ai besoin d'ajouter des formules dans les dernières colonnes pertinentes pour les données mais non incluses dans les données, et l'une d'entre elles est le numéro de la période (nous travaillons pour un client avec l'année à compter du 1er et 13 avril. périodes de 4 semaines dans l'année). Pour l'acomplish, j'ai une feuille séparée avec toutes les dates de la colonne A, puis des périodes et d'autres données dans les colonnes suivantes. Un simple vlookup regarde la date et retourne la période.

Cependant, certaines des dates sont stockées sous forme de texte (et donc le VLOOKUP a # N / A), une solution simple, une pâte spéciale - ajoutez une cellule vierge et voici, cela fonctionne. Et cela fonctionne si je le fais manuellement. Mais cela est censé faire tout le travail de l'utilisateur afin que j'ai essayé de le faire de manière programmatique selon le code ci-dessous:

'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"

Je reçois la cellule vide des "dates et périodes" parce que je sais que ce sera définitivement vide.

Maintenant, lorsque j'exécute ce code, cela fonctionne pour la plupart des valeurs. Cependant, pour toutes les dates de la colonne e, où la journée est inférieure au mois, par exemple le 1er avril, 4 mai, etc., il change le jour et le mois autour, et ce n'est pas le formatage, en passant à la date de longue date, je peux le voir a changé le Données autour de.

Y a-t-il un moyen autour de cela? J'ai cherché une solution, mais tous les problèmes que je pouvais trouver lorsque la recherche était de faire avec le système de date de 1904 ou avec le formatage.

Toute aide serait appréciée.

solution: [Briser en pièces et le remettre ensemble]

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

Était-ce utile?

La solution

J'ai eu ce problème plusieurs fois.La réponse est généralement spécifique à la solution, mais vous pouvez essayer de convertir la date à une chaîne du format DD-MMM-AAAA, puis de retour.

Autres conseils

Lorsque vous entrez quelque chose qui ressemble à une date dans une cellule Excel, elle l'analysera selon les paramètres régionaux de Windows. Les chaînes qui ne correspondent pas à être entrées sous forme de texte, des chaînes qui se sont transformées en dates Excel. Ce dernier ne sera généralement pas le même que la date prévue.

Je suggérerais de le corriger pendant le processus d'importation. Comment procéder à cela dépend des spécificités que vous n'avez pas incluses, mais le processus consiste à utiliser le processus de données / importation et passer par l'assistant d'importation de texte. Cet assistant vous permettra de spécifier le format de chaque colonne; Y compris le format de date pour E. Cela garantira que toutes vos dates sont correctement comprises par Excel comme étant des dates. Donc, si le format de date entrant est MDY, vous spécifiez MDA; et Excel le stockerait correctement, puis l'affichait dans votre réglage par défaut ou de quelque manière que vous formatez cette colonne.

Une autre option, si possible, serait de modifier le générateur de rapports afin qu'il génère des dates situées dans le même format que le format de date courte de vos paramètres régionaux Windows

J'imports un grand nombre de fichiers envoyés par courrier électronique à moi dans des bases de données et cela est toujours un problème.Le problème n'est pas causé par des données incorrectes, une mauvaise mise en forme ou une telle chose, mais simplement une erreur d'Excel (je pense que Microsoft appelle-la une fonctionnalité), où il essaie de comprendre les dates du format américain et de "corriger automatiquement"trouve.Il est aggravé car si une date ne fonctionne pas dans le format américain, elle le convertit en un fichier texte vous laissant avec quelques dates formatées d'une manière, d'une autre.

La seule solution que j'ai trouvée est de modifier les données sur la feuille source afin que Excel ne puisse pas la comprendre comme une date de quelque manière que ce soit, puis l'importer, puis le convertir, un énorme phaff.Microsoft s'il vous plaît trier cela, il gaspillant tant de temps de contournement de la programmation de temps!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top