Temps écoulé Excel sous forme de formule de soustraction de nombres simples


0

Par souci de simplicité d’entrée et afin d’empêcher Excel d’insérer des heures et des informations inutiles sur l’heure de la journée, j’utilise ce format personnalisé pour entrer l’heure en minutes et en secondes: "00\:00"

J'essaie de calculer la différence de temps avec ce type de données, mais Excel ne la reconnaît pas comme une numérotation en base 60. Est-il possible de conserver ce format et de calculer un résultat?

Par exemple, si A1 lit "00:30" et B1, "01:21", comment puis-je calculer C1 et obtenir "00:51"?


Je pense que cela peut être un problème XY . Je sais que vous essayez d'éviter à Excel d'insérer des informations inutiles, mais quelles sont les informations saisies qui ne peuvent pas être corrigées via le formatage?
BruceWayne

Jamais su ce concept. Quelqu'un a fourni une solution ci-dessous, mais je garderai cela à l'esprit à l'avenir, merci.
etudes

Réponses:


2

Voici une façon de le faire avec une formule, bien qu'il y ait tellement de parenthèses dans cette équation que je suis sur le point de croiser les yeux.

entrez la description de l'image ici

Comme les deux chiffres les plus à droite de votre format personnalisé représentent les secondes, nous pouvons les séparer en utilisant RIGHT (). Ensuite, en soustrayant cela du nombre original, vous obtenez les "minutes" dans votre format personnalisé.

Je vais commencer par les morceaux, puis construire la formule à partir de ses parties.

Convert B to Seconds  =  (60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2)
Convert A to Seconds  =  (60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2)
Difference in Seconds  =  ((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2))

Now to convert back to the original format:
 1. Divide the difference by 60, truncate it, and multiply by 100 to get the minutes part.
 2. Divide the difference by 60, and take the modulus to get the seconds part.
 3. Add 1 and 2.

Minutes Part  =  100*(TRUNC((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)
Seconds Part  =  MOD((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2))),60)

And here's the entire formula:

=100*(TRUNC((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2)))/60))+MOD((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2))),60)

Ouf! J'espère que cela t'aides.


1
Vous êtes comme un savant fou. Merci non seulement pour votre travail, mais surtout pour votre explication. (Je suis conscient des commentaires non "merci", je vais donc le supprimer plus tard, mais cela mérite sérieusement un merci!)
etudes

... euh oui ce que tu as dit! (Bien fait, wow).
BruceWayne

0

Si vous utilisez 121et formatez-le (c'est-à 01:21-dire 1 minute et 21 secondes), vous pouvez utiliser une colonne d'assistance pour faire le calcul:

Dans la colonne B, mettez ceci et faites glisser:

=IF(LEN(A1)=4,TIME(0,LEFT(A1,2),RIGHT(A1,2)),IF(LEN(A1)=3,TIME(0,LEFT(A1,1),RIGHT(A1,2)),TIME(0,0,A1)))

Alors dedans B3, tu peux faire B2-B1.

Cela devrait fonctionner pour des temps allant de 00:01à 59:59je crois.

entrez la description de l'image ici


Merci! Avec la façon dont j'ai les choses présentées, cependant, ce serait gênant. Il faudrait deux colonnes d'assistance - j'aurais dû préciser plus précisément, A1 correspond à 00:30, B1 à 01:21 et je veux que C1 soit lu comme suit: 00:51 (je le mets à jour dans mon message d'origine). J'utilise un modèle Excel qui m'a été donné, donc si je peux l'aider, je ne veux pas ajouter de colonne. Est-il possible de le faire dans une équation qui prend les deux premiers caractères et la convertit en base 60, puis les deux derniers caractères et convertit cela?
etudes

@etudes - Cela fonctionnerait-il (convertir les deux premiers caractères)? Parce que si vous venez 30, cela convertira cela en base 60. Mais si vous avez 121ça prend 12en base 60. Et si vous aviez 4030, ça prendrait 40? ... aussi, est-ce que VBA (une macro) est une option?
BruceWayne

Oh, je suppose que vous avez raison ... Une formule serait idéale car parfois je dois revenir en arrière et ajuster les temps, mais je suppose qu'une macro serait la meilleure solution. Est-ce que ce serait quelque chose que je lancerais à la fin et qui effectuerait les calculs?
etudes

@etudes - Vous pouvez avoir une formule personnalisée qui fonctionnerait comme =get_time_difference(A1,A2)... ou autre chose
BruceWayne

OK, je vois. Donc, comme vous le faisiez auparavant, il faudrait que la formule convertisse les nombres en données temporelles réelles, puis la soustraction, oui? C'est là que je suis coincé. Je ne connais pas suffisamment le système de calcul d'Excel pour comprendre comment le préparer.
etudes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.