1 votes

Comment convertir un texte tel que "1 jour(s), 14 heure(s), 16 minute(s)" en format horaire ?

Je dois convertir du texte qui indique l'âge de quelque chose en un format temps que je peux utiliser pour les COUNTIFS afin de filtrer des données sur une certaine période.

Voici quelques exemples de données:

1 jour(s), 14 heure(s), 16 minute(s)
35 jour(s), 6 heure(s), 17 minute(s)
14 heure(s), 7 minute(s)

J'ai pensé à utiliser TIME avec les attributs LEFT, MID, RIGHT mais comme il inclut des jours s'il dépasse 1 jour, et ne affiche pas toujours 2 chiffres, je ne sais pas comment réaliser cela.

3voto

databyte Points 708

Essayez

=SI(ESTERREUR(TROUVE("jour";A1));0;GAUCHE(A1;TROUVE("jour";A1)-1))+0+TEMPS(SI(ESTERREUR(TROUVE("heure";A1));0;TRIM(MID(" "&A1;TROUVE("heure";" "&A1)-3;2)))+0+0;SI(ESTERREUR(TROUVE("minute";A1));0;TRIM(MID(A1;TROUVE("minute";A1)-3;2)))+0;0)

Le résultat sera un nombre décimal avec les chiffres avant la virgule le nombre de jours et les décimales le temps. Formattez comme vous le souhaitez.

Modifier formule corrigée pour permettre une valeur dans A1 commençant par une heure à un seul chiffre.

entrer la description de l'image ici

0 votes

Waouh, incroyable! Cela fonctionne pour toutes les fois sauf celles qui n'ont que des heures à un seul chiffre. actuellement en train de peaufiner la formule pour qu'elle fonctionne pour toutes.

0 votes

Cela fonctionne pour les heures à un seul chiffre dans mon test. Votre exemple de données a une virgule espace heure à un seul/double chiffre. La formule fonctionne avec cela. Publiez si vos données sont différentes.

0 votes

Pour être plus clair, c'est lorsque qu'il n'y a pas de jour et qu'il y a une seule heure digitale telle que : 2 heure(s), 3 minute(s), 8 heure(s), 11 minute(s), 1 heure(s), 0 minute(s), etc

1voto

Altealice Points 2457

Voici une approche alternative au problème à garder dans votre poche arrière.

Les périodes de temps sont exprimées en jours, heures et minutes. Un ou plusieurs éléments de temps (jours, heures ou minutes) peuvent être absents. Les éléments de temps sont séparés par des virgules.

Vous pouvez utiliser Texte en colonnes pour diviser les éléments de temps en cellules séparées, de sorte que chaque cellule contienne un seul élément de temps, commençant par une quantité et se terminant par un identifiant d'unité. Vous extrayez la quantité, la convertissez en fraction d'une journée en fonction de l'unité, puis additionnez les morceaux. Ensuite, formatez le résultat en heures et minutes.

Texte en colonnes démarre dans la cellule actuelle, remplaçant les valeurs existantes, donc si vous voulez conserver les valeurs existantes, copiez et collez les données dans une zone temporaire et laissez Excel les analyser là-bas. Voici à quoi cela ressemble après qu'Excel l'ait divisé en colonnes :

saisissez la description de l'image ici

J'ai ajouté quelques enregistrements pour couvrir différentes possibilités d'éléments de temps présents. Notez que le premier élément peut être des jours, des heures ou des minutes, le deuxième élément peut être seulement des heures ou des minutes, et le troisième élément peut être seulement des minutes. La colonne D est le résultat formaté en heures et minutes.

Pour expliquer les calculs, j'ajouterai quelques colonnes pour montrer ce qui arrive à chaque élément :

saisissez la description de l'image ici

Les colonnes F, G et H sont les traductions temporelles des éléments des colonnes A, B et C, respectivement. La colonne J est la somme en temps Excel.

La formule en F1 :

=GAUCHE(A1;TROUVE(" ";A1)-1)/SOMMEPROD(--ESTNUM(SEARCH({"jour","heure","minute"};A1))*{1;24;1440})

Cela extrait le nombre en trouvant le premier espace vide. Il recherche la cellule pour déterminer quelle unité de temps elle contient, puis convertit le nombre en fraction d'une journée en fonction de cette unité.

La formule en G1 :

=GAUCHE(TRIM(B1);TROUVE(" ";TRIM(B1))-1)/SOMMEPROD(--ESTNUM(SEARCH({"heure","minute"};B1))*{24;1440})

C'est similaire sauf que les données contiennent un espace avant le nombre, qui doit être élagué.

La formule en H1 :

=GAUCHE(TRIM(C1);TROUVE(" ";TRIM(C1))-1)/1440

Étant donné que le troisième élément ne peut être que des minutes, nous n'avons pas besoin de rechercher les unités.

Chaque morceau est maintenant converti en temps Excel et peut être additionné. Cependant, il peut y avoir moins de trois éléments présents. Les combiner dans la colonne J ressemble à ceci :

=SIERREUR(F1+SIERREUR(G1;0)+SIERREUR(H1;0);"")

Si la cellule d'origine était vide, cela renvoie une valeur nulle. S'il manque un élément, cela remplace l'erreur résultante par zéro. La formule unique dans la colonne D remplace simplement les références de cellules ci-dessus par les formules dans les cellules référencées :

=SIERREUR(GAUCHE(A1;TROUVE(" ";A1)-1)/SOMMEPROD(--ESTNUM(SEARCH({"jour","heure","minute"};A1)){1;24;1440})+SIERREUR(GAUCHE(TRIM(B1);TROUVE(" ";TRIM(B1))-1)/SOMMEPROD(--ESTNUM(SEARCH({"heure","minute"};B1))*{24;1440});0)+SIERREUR(GAUCHE(TRIM(C1);TROUVE(" ";TRIM(C1))-1)/1440;0);"")

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X