Je dois suivre la chaîne de date:
2019-05-07
Je veux maintenant convertir la date et l'heure en 2 cellules, mais cela ne fonctionne toujours pas avec la date. Je l'ai essayé avec:
=LEFT(F2; FIND("T"; F2) - 1)
Ce qui donne:
2019-05-07T19:00:00.000Z
Mais je ne peux pas convertir cela en une date comme JJ .MM.YYYY. Si je tape "2019-05-07" manuellement, je peux le convertir - mais il n'est pas convertible avec les données importées. Pourquoi?
Et j'ai le même problème avec l'heure.
3 Réponses :
Vous n'avez pas besoin d'une expression régulière ni même de FIND
si le format des valeurs de chaîne est toujours le même.
Obtenez les dates avec
=MID(F2, 12, 5)
( text (..., "jj.MM.aaaa")
effectuera la conversion d'une chaîne de date reformatée) et les heures avec
=text(text(text(day(LEFT(F2, 10)),"00") & "/" & text(month(LEFT(F2, 10)),"00") &"/"& year(LEFT(F2, 10)),"0000"),"dd.MM.yyyy")
Voir la capture d'écran de Google Sheets:
Pour répondre à votre question, quoique superficiellement, des fonctions de texte (telles que LEFT et TEXT) renvoie des chaînes que Sheets ne tente pas de convertir automatiquement en un nombre qui pourrait ensuite être présenté au format Date.
Cependant, cela peut être forcé avec VALUE . Ainsi, en enveloppant VALUE autour de ce que vous avez essayé, comme ceci:
=MID(G2; 12; 5)
devrait, pour votre exemple, renvoyer 07.05.2019
lorsqu'il est formaté avec un format personnalisé de
=split(left(F2;23);"T")
Depuis taggé regex vous pouvez appliquer:
=split(regexreplace(F3;"[A-Z]";" ");" ")
pour remplacer à la fois le T
et le Z
par des espaces avant le fractionnement sur les espaces car le format semble susceptible d'être cohérent (par exemple toujours 24 caractères) mais une version plus courte serait:
dd.mm.yyyy
avec application d'un formatage approprié pour chacune des dates et le temps.
L'application, comme dans un commentaire,
=value(LEFT(F2; FIND("T"; F2) - 1))
présente l'inconvénient potentiel que MID est également une fonction de texte (donc ne convient pas, par exemple, pour un formatage pratique avec AM / PM).
Peut-être que
= text (text (text (day (LEFT (C8, FIND ("T", C8) -1)), "00") & "/" & text (month (LEFT (C8, FIND (" T ", C8) -1))," 00 ") &" / "& année (GAUCHE (C8, FIND (" T ", C8) -1))," 0000 ")," jj.MM.aaaa " )
?génial, cela fonctionne! Et comment puis-je obtenir le "19:00" dans une autre cellule?
Peut-être juste
MID (F2, 12, 5)
? Ou= text (MID (F2, 12, 5), "hh: mm")
. Je ne suis pas sûr que vous ayez réellement besoin de TROUVER leT
dans la cellule si le format est toujours le même. Pas besoin de regex non plusMerci beaucoup, c'était la solution: = MID (G2; 12; 5)
Heureux que ma solution ait fonctionné pour vous. Veuillez envisager d'accepter la réponse en cliquant sur ✓ à gauche (voir Comment accepter les réponses SO ) et voter si ma réponse vous a été utile (voir Comment faire vote positif sur Stack Overflow? ).
Y a-t-il d'autres minces qui ne sont pas claires? Avez-vous besoin de modifications? Votre exemple indique que vos chaînes sont toujours dans le même format, donc l'utilisation de regex ne semble pas nécessaire, mais veuillez indiquer si vous devez travailler avec des données plus désordonnées - alors quelque chose comme
REGEXEXTRACT (F2, "^ ([ 0-9] [0-9 -] +) ")
etREGEXEXTRACT (F2," T ([0-9] +: [0-9] +) ")
venir à portée de main