Je suis au Royaume-Uni. J'ai un problème avec une liste de dates fournie au format américain. Excel semble traiter ceux qui sont valides dans les deux formats comme des dates au Royaume-Uni (par exemple, le 03/01/2012 devient le 3 janvier plutôt que le 1er mars) et ceux qui ne sont pas des dates au Royaume-Uni valables (par exemple, 03/13/2012) comme texte de base. Je suppose que ce choix est quelque chose à voir avec mes paramètres régionaux.
Ce que je veux, c'est que le système reconnaisse que cette colonne de texte est fourni au format de date américain et le convertit dans la représentation de date sous-jacente pour les calculs.
Comment puis-je faire cela?
EDIT: Les dates sont fournies dans un fichier CSV de la forme:
3/ 1/2012, 09:01 , 18:58 ,9.4,0.6
où 3/1 est le 1er mars
Pour Excel 2010, plutôt que d'ouvrir votre fichier CSV, créez un nouveau classeur, puis sous l'onglet DATA, sélectionnez Obtenir des données externes → à partir du texte . Cela mène à l'interface où vous pouvez spécifier comment interpréter vos données de texte, y compris comment gérer les dates.
Modifiez l'extension du fichier de ".csv" à ".txt", puis ouvrez-la avec Excel. Excel vous donnera un assistant d'importation de texte. Sélectionnez "délimité" sur la première page, cochez "virgule" sur la deuxième et sur la troisième, vous pourrez sélectionner le type de chaque colonne de données. Un des types est la date et a une liste déroulante avec une variété de formats (m/j/a, j/m/a, etc., etc.).
J'ai rencontré le même problème mais d'une manière légèrement différente. Les dates importées à partir d'un fichier CSV sont au format UK, mais où elles sont valides aux États-Unis et au Royaume-Uni, Excel les traite au format US. Ma solution consiste à analyser les dates sous forme de texte (à l'aide de NumberFormat = "@") dans la feuille, puis à reformater les cellules au format de date correct (à l'aide de NumberFormat = "jj/mm/aaaa").
Cela me semble (de toute façon) la manière la plus simple de le faire.
Le vrai problème est que les dates sont fournies sous une forme formatée. La première chose que tout programmeur débutant apprend est qu’il ne faut jamais formater les dates, ce sont juste des chiffres qui sont interprétés pour corriger le format.
La vraie solution est donc la suivante: 1. Avoir les dates au format numérique, après avoir échoué. 2.Tourner les dates au format numérique vous-même et les afficher ensuite dans une colonne séparée, quel que soit le format de date.
Le numéro 2 n'implique aucune programmation, conserve simplement le format de colonne original en tant que texte général, en utilisant une formule (mieux vaut une colonne de tableau calculée) qui le transforme en forme numérique et une autre colonne qui affiche cette valeur en tant que format de date. à votre goût.
Vous pouvez probablement faire ce qui suit:
1) Changez le réglage de la date sur votre barre des tâches Windows en minutage américain Voici un guide sur la façon de le faire: http://www.sysprobs.com/change-date-format-windows-7-ddmmyyyy
2) Définir le calendrier américain sur Excel. Aller au format de cellule> Date> Locale> Anglais (US)
Cela a fonctionné pour moi, espérons que cela aide.
CONVERTIR LES DATES DES DATES DU ROYAUME-UNI EN Excel/CSV
(vous ne voulez pas vraiment changer vos paramètres régionaux)
Ceci est un processus en 2 étapes:
Pour empêcher Excel d'essayer de convertir automatiquement certaines dates au format UK, puis de gâcher la conversion, sélectionnez la colonne dans Excel et accédez à Données> Texte en colonnes.
N’essayez pas de le définir via le menu de formatage (cellules de formatage avec un clic droit), cela ne fonctionnera pas. Ne sélectionnez pas la date dans le champ "Texte en colonnes", car cela convertira les dates américaines en utilisant les paramètres britanniques. Utilisez "Texte"
[Voir aussi la réponse de dunxd pour importer des fichiers csv. Cela fonctionnera également si importé en tant que txt.]
2. Dans une colonne de secours proche, copiez la formule suivante. Remplacez les références à F2 par votre cellule de départ. Formatez la colonne au format de date que vous choisissez.
= DATEVALUE (CONCATENATE ((IF (MID (F2,4,1)), "/", MID (F2,3,1), IF (MID (F2,2,1) = "/", MID (F2,3 , 2), IF (MID (F2,6,1) = "/", MID (F2,4,2), MID (F2,4,1)))), "/", IFERROR ((IF ( RECHERCHE ("/", GAUCHE (F2,2)), GAUCHE (F2,1), GAUCHE (F2,2))), GAUCHE (F2,2)), "/", SI (ISERR (FIND ("/ ", DROITE (F2,3), 1)), DROITE (F2,4), DROITE (F2,2))))
Remarque: cela devrait fonctionner avec les dates dans les formats suivants:
Si votre date n'est pas séparée par "/", remplacez ce séparateur dans la formule ci-dessus.
J'espère que ça aide.
MISE À JOUR 17-2-2014
Comme demandé un peu d'une panne:
Datevalue et Concatenate créent simplement la dernière chaîne au format de date britannique, donc intéressant:
une. Obtenez le jour américain (valeur moyenne)
((SI (MID (F2,4,1) = MID/F2,3,1), SI (MID (F2,2,1) = "/", MID (F2,3,1), IF (MID (F2,6,1) = "/", MID (F2,4,2), MID (F2,4,1)))))
La partie la plus délicate. Nous ne sommes pas sûrs du format de date. Nous savons qu'il y aura deux "/" quelque part mais nous devons trouver où. La partie la plus délicate est dans une donnée telle que 1/1/10 le deuxième "/" pourrait être dès le 4ème chr, où dans une date comme le 10/10/10 le premier "/" est le 3ème, où le la seconde est le 6ème chr. Nous avons besoin d’un moyen de distinguer le premier et le deuxième "/". Heureusement qu’un format "1/1 /" est la seule façon pour un "/" de devenir la 4ème chr. Nous pouvons donc utiliser ceci:
b. Obtenir le mois américain (valeur de gauche)
IFERROR ((SI (SEARCH ("/", GAUCHE (F2,2)), GAUCHE (F2,1), GAUCHE (F2,2))), GAUCHE (F2,2))
Assez simple,
c. Obtenez l'année (bonne valeur)
SI (ISERR (FIND ("/", DROITE (F2,3), 1)), DROITE (F2,4), DROITE (F2,2))
Simple,
J'espère que cela t'aides.
J'ai eu le même problème, mais à l'inverse: du format australien au format américain.
Dans mon cas, je lance une macro qui ouvre le fichier CSV. Une colonne du fichier contient des dates. Après avoir ajouté une colonne supplémentaire avec des données calculées, la macro l’enregistre sous un fichier .XLS. Dans le fichier XLS, une date valide dans les deux formats changera, c'est-à-dire que le 1/11/12 deviendra le 11/1/12. Notez que ma macro ne touche en aucun cas la colonne de date et que le format CSV est toujours correct. Cela ne semble se produire que sur le PC du client qui exécute Office 2010. Je ne l'ai pas vu dans Office 2000 ou 2003.
La seule façon pour moi de contourner le problème est de modifier la macro pour importer le fichier CSV au lieu de l'ouvrir et de spécifier le format de texte pour la colonne de date.
J'ai envisagé une autre possibilité, à savoir que la macro Shell ressemble à une commande grep pour insérer un "espace" avant les dates. Cela empêche Excel de l’interpréter comme une date (les guillemets autour des dates n’aident pas). J'ai décidé que l'importation était la manière la plus propre cependant. Comme il n’existe pas d’utilitaire Win natif pour effectuer l’édition, je devrais installer grep sur le PC du client.
Le problème est que vous avez défini la date dans Excel comme (et certaines dates) Les formats de date commençant par et asterik () répondent aux modifications des paramètres régionaux de date et heure spécifiés pour le système d'exploitation. Vous devez vous rendre sur votre panneau de contrôle et ajuster le format de la date et de l’heure pour éviter que les dates ne soient retournées. Par exemple, le 01/11/2013 passera parfois au 11/01/2013 (où le 11 novembre), mais le 30/11/2013 ne sera pas inversé, car ms ne reconnaît pas le 30ème mois valide. aucune formule requise
J'ai récemment rencontré un problème similaire avec Excel 2010. Les dates interprétées par Excel n'étaient pas interprétables comme un format de date américain correctement, c.-à-d. Toute date dont le jour était supérieur à 12. Pour toutes les dates avec un jour inférieur à 13, elle les affichait au format US mm/jj/aa - toutes dans la même colonne et tous dans le même format. Mon premier plan d'action consistait à vérifier que mes paramètres dans Excel et Windows étaient anglais (Australie) ou à tout le moins anglais (Royaume-Uni). Ni était correct donc j'ai changé les deux et redémarré Excel comme conseillé. Cela n'a pas résolu le problème. J'ai reformaté la colonne de date en tant que texte, inséré quelques lignes entre les dates correctes et les dates américaines, remplacé en faisant glisser le pointeur de copie, puis saisi les dates correctes dans les nouvelles cellules, fait glisser le contenu des autres cellules de l'enregistrement dans leur ne lieu et a supprimé les lignes en mauvais état. Ce que j’ai découvert en reformatant la colonne de date en format de date, c’est que, alors que mes dates étaient maintenant correctement orientées jj/mm/aaaa, Excel reconnaissait toujours deux formats différents - l’un justifié à gauche, l’autre justifié à droite et aucun du format indiqué d'autres options permettraient de résoudre ce problème.
Bizarrement, quand je tabulé d'une des cellules justifiées à gauche à la cellule adjacente, la cellule reformatée à la version justifiée à droite et conservait le format de date correct. Je ne peux pas expliquer cela étant donné qu'Excel a affiché le descripteur "Date" pour les deux dans la section "Numéros" du ruban, mais cela a résolu le problème.
J'ai ce problème depuis assez longtemps. Cela semble être un problème communément mal compris. Plus précisément, l'ordinateur ne reconnaîtra pas nécessairement une date au format correct. Si vous deviez enregistrer une date au format JJ/MM/AAAA, Excel l'interpréterait au format MM/JJ/AAAA. Ainsi, 05/06/2012 correspondrait au 5 juin 2012, mais Excel serait interprété comme étant au 6 mai 2012. De même, si vous saisissez 13/12/2012, où vous entendez le 13 décembre 2012, Excel ne reconnaître la date du tout, car il n'y a pas de mois 13.
Afin de remédier à ce problème, j’ai mis au point une formule permettant d’inverser les deux premiers chiffres. Cela peut être utilisé pour convertir US en UK, ou vice versa.
=IF(ISERR(DATEVALUE(F10))=TRUE,DATE(RIGHT(TEXT(F10,"DD/MM/YYYY"),4),LEFT(TEXT(F10,"DD/MM/YYYY"),2),LEFT(RIGHT(TEXT(F10,"DD/MM/YYYY"),7),2)),IF(ISERR(DATEVALUE(TEXT(F10,"mm/DD/YYYY")))=TRUE,DATE(RIGHT(TEXT(TEXT(F10,"mm/DD/YYYY"),"DD/MM/YYYY"),4),LEFT(TEXT(TEXT(F10,"mm/DD/YYYY"),"DD/MM/YYYY"),2),LEFT(RIGHT(TEXT(TEXT(F10,"mm/DD/YYYY"),"DD/MM/YYYY"),7),2)),0))
Cela a fonctionné pour moi exactement comme je le voulais et je pense que cette solution n'existe pas encore sur le terrain. S'il vous plaît, faites-moi savoir si cela fonctionne aussi bien pour vous que pour moi.
PS J'utilisais Excel 2007 pour cette formule.
Informations connexes et réponse à tous les problèmes:
Sauvegardez toutes les informations de date et heure au format dans un seul format :
http://en.wikipedia.org/wiki/ISO_8601
Associez un champ de format d'affichage aux données enregistrées, si nécessaire.