J'ai importé un fichier CSV avec 2 longues colonnes de dates. Ces dates sont au format américain Aug/28/2013
et je veux qu’elles soient au format britannique standard dd/mm/yyyy
.
J'ai essayé de formater les cellules en tant que dates US, puis de les convertir en formats numériques et en diverses autres permutations dans la zone de format Date, mais sans succès.
Quelqu'un peut-il me débarrasser de ces terribles dates américaines s'il vous plaît?
Une autre solution sans utiliser de formule:
Les dates doivent maintenant être converties en dates au Royaume-Uni.
Le problème est qu’une date aux États-Unis peut être analysée par Excel comme une date au Royaume-Uni lorsque le jour est inférieur à 13. Lorsque cela se produit, Excel le convertit en numéro de série (date) au Royaume-Uni localisé.
Donc, 19/03/2014 est évidemment une date américaine du 19 mars. Cependant, le 05/03/2014 étant ambigu, Excel le traite comme le 5 mars, au lieu du 3 mai, aux États-Unis. Toute formule doit vérifier si Excel a stocké la date américaine comme date britannique. Une date au Royaume-Uni sera stockée dans Excel sous forme de numéro.
=IF(ISNUMBER(A2),DATE(TEXT(A2,"yyyy"),TEXT(A2,"dd"),TEXT(A2,"mm")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))
(Pour une date US dans les cellules A2 et PC, la date est jj/mm/aa).
Si ISNUMBER
est vrai, la date américaine ressemble à une date britannique et Excel l'a numérotée en tant que nombre. Ainsi, vous pouvez formater la date sous forme de texte et revenir à une date. Le jour de la note est passé au paramètre month de la première fonction DATE pour effectuer la conversion. Si ISNUMBER
est false, il est stocké sous forme de chaîne en tant que Excel ne convertit pas une chaîne de date avec> 12 mois. Utilisez donc des fonctions de chaîne pour le séparer de la fonction DATE.
Je suppose que la date que vous avez reçue est formatée en texte et que le faire en tant que date ne change rien. Vous pouvez exécuter la formule suivante à la date:
=(MID(A1,FIND("/",A1)+1,FIND("/",A1,FIND("/",A1)+1)-FIND("/",A1)-1)&"-"&LEFT(A1,FIND("/",A1)-1)&"-"&RIGHT(A1,4))*1
Si vous obtenez des nombres, il vous suffit de le formater avec dd/mm/yyyy
et ça devrait être bon.
J'ai essayé certaines des autres suggestions mais aucune ne semblait fonctionner pour moi. Dans mon cas, j'importais des dates américaines sous la forme M/j/aaaa hh: mm: ss. Si l'utilisation de VBA dans votre feuille de calcul ne vous dérange pas, alors la fonction suivante a fait le travail pour moi:
Public Function USDate(ds As Variant) As Variant
Dim sp() As String
Dim spt() As String
Dim spt2() As String
If ds = vbNullString Then
USDate = ""
ElseIf IsNumeric(ds) Then
' Convert numeric US dates wrongly interpreted as UK i.e. 1/7/2017 as 7th January 2017
USDate = DateSerial(Year(ds), Day(ds), Month(ds))
Else
sp = Split(ds, "/") ' split the date portion
spt = Split(sp(2), " ") ' split the time from the year
spt2 = Split(spt(1), ":") 'split the time hms
USDate = DateSerial(spt(0), sp(0), sp(1)) + TimeSerial(spt2(0), spt2(1), spt2(2))
End If
End Function
Merci pour https://stackoverflow.com/users/845584/peterx soulignant - vous devrez créer la fonction dans un module de code VBA pour utiliser cette technique.
Utilisez-le simplement dans une formule de feuille de calcul, par exemple = USDate (A2)
Il y avait un autre problème pour moi, car d'une manière ou d'une autre, les données brutes étaient censées être lues sous forme de nombre, mais ce n'est pas le cas. J'ai donc mis à jour la formule avec 1 cas final:
= IFERROR (IF (ISNUMBER (A2), VALUE (TEXT (A2, "mm/jj/aaaa"))), DATE (DROITE (A2,4), GAUCHE (A2, FIND ("/", A2) -1) , MID (A2, FIND ("/", A2) +1,2))), DATE (DROITE (A2,4), GAUCHE (A2, FIND ("/", A2) -1), MID (A2, TROUVER ("/", A2) +1,1)))
À cet égard, la formule ci-dessous peut être utile pour modifier une date de
"MM/JJ/AAAA"
dans
"JJ/MM/AAAA".
=VALUE(TEXT(B2,"mm/dd/yyyy"))
Cela peut être délicat lorsque les dates sont dans un format mixte, par exemple. UK et US dans la même colonne. J'ai trouvé une solution efficace si peu élégante:
Step1) Select the column containing the dates to be converted;
Step2) Format, Cells, Text;
Step3) Format, Cells, Date, US;
Step4) Data, Text to column, Next, Delimited, Next, delete all delimiters, Next, select format MDY;
Step5) Format, Cells, Date, UK.
Step4 avait été suggéré ailleurs, mais cela seul ne le faisait pas pour moi. J'espère pouvoir combiner ces étapes dans une macro, mais aucun succès à ce jour.
Je ne pouvais pas obtenir la réponse la plus commune au travail, le processus qui a fonctionné pour moi était:
Pour la date 10/04/2018 11:49:20
, cliquez avec le bouton droit de la souris sur la cellule et sur "Formatage des cellules", sur l'onglet "Nombre", sélectionnez la catégorie "Personnalisé", puis sélectionnez mm/dd/yyyy hh:mm
.
Nous pouvons tirer le meilleur parti des deux mondes avec cette formule plus concise:
=IF(ISNUMBER(A2),VALUE(TEXT(A2,"mm/dd/yyyy")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))
Je ne trouve rien de plus court.