J'ai un tableur Google qui ressemble à peu près à ceci:
Date | Start time | End time | Minutes
------------+-------------+-------------+-----------
1/11/2012 | 11:39 | 12:41 | ?!
------------+-------------+-------------+-----------
| | |
En ce moment, si je remplis le nombre de minutes entre les deux heures de la journée à la main. Existe-t-il un moyen simple de calculer un delta horaire et de le faire par le tableur?
Google a ajouté un nouveau format de nombre appelé Durée. Définissez vos champs de début et de fin sur Format -> Number -> Time
et votre champ de calcul sur Format -> Number -> Duration
.
Une fois que vous avez fait cela, vous pouvez soustraire les champs pour obtenir la différence, comme l'a noté Stefano Palazzo dans sa réponse.
Oui, si vos champs de temps sont correctement formatés (cliquez sur Format → Numéro → Heure), vous pouvez simplement ajouter et soustraire des heures:
=C2-B2
ou
21:58:00 - 20:44:00 = 1:14:00
Cela vous donnera le delta de temps sous la forme HH:MM:SS
. Et si vous voulez calculer le nombre de minutes, vous pouvez utiliser les fonctions Hour()
, Minute()
et Second()
de ce champ:
=(Hour(D2) * 60) + Minute(D2) + (Second(D2) / 60)
Bien sûr, s'il y a des secondes intercalaires, des changements de fuseau horaire ou si un événement dure plus de 24 heures, vous devrez quand même ajuster les résultats manuellement.
Si un événement se prolonge après minuit, disons de 23h50 à 00h10, ce sera une heure négative!
Pour que ces événements soient gérés "correctement", vous pouvez soit mettre "24:10", soit scinder l'événement en deux.
Même s'il est un peu plus difficile d'entrer des données, le moyen le plus fiable consiste à marquer le champ beinning et end comme "Date Time" et le champ delta comme "Heures", ce qui ressemblera à ceci:
Beginning End Delta
8/1/2013 0:00:00 8/2/2013 12:30:00 36:30:00
Si vous ajoutez la formule suivante dans D2
, les minutes sont calculées automatiquement:
=ARRAYFORMULA(IF(ISBLANK(B2:B)=FALSE,((C2:C-B2:B)*24*60),""))
La différence entre les heures, au format décimal, est exprimée en jours. Donc, multiplier par 24 fois 60 donnera des minutes
Il y a un préalable: la colonne D doit être formatée comme "normale".
Voir l'exemple de fichier que j'ai créé: Delta Time
Pour une solution plus robuste, nous utilisons une fonction personnalisée.
1. Ajout de la fonction personnalisée
Utilisation de l'éditeur de script (suivez les instructions de https://developers.google.com/apps-script/execution_custom_functions ) - écrit:
function toEpoch (indate) {
return indate.getTime();
}
2. Ajouter un formulaire
Puis dans la cellule, écrit:
=(toEpoch(C2)-toEpoch(B2)) / 60*1000
Ce qui convertit la différence en millisecondes Epoch en minutes.
J'ai fait beaucoup d'expérimentation. C'est le moyen le plus simple de calculer un delta temporel dans Google Spreadsheets. Formatez la cellule contenant la formule comme ceci:
Format> Nombre> Plus de formats> Plus de formats de date et d'heure, supprimez "deuxième" et :
. Ensuite, formatez les cellules Heure de fin et Heure de début comme suit: h:mm am/pm
.
Utilisez la formule =abs(end time - start time)
. Cela vous donne une valeur absolue, il n'y aura donc pas de valeurs de temps négatives.
Tellement plus simple: regardez ce B2: 23:00 C2: 1:37 D2: = C2-B2 + (B2> C2)
Pourquoi cela fonctionne, le temps est une fraction de jour, la comparaison B2> C2 renvoie Vrai (1) ou Faux (0), si vrai 1 jour (24 heures) est ajouté. http://www.excelforum.com/Excel-general/471757-calculating-time-difference-over-midnight.html
Si vous voulez que votre delta temporel soit mesuré en jours, utilisez
=DAYS(end_date, start_date)
Vous pouvez aussi essayer TIMEVALUE()
.
Dans le cas ci-dessus, la solution serait:
(TIMEVALUE(End Time) - TIMEVALUE(Start Time))*24*60
vous donnera la différence de temps en MINUTES.
Dans Google Sheets, j'ai utilisé la formule ci-dessous
=Round((hour(A2-A1)*60 + minute(A2-A1))/60,2)
pour me donner la différence en heures décimales.
J'utilise cette formule:
=HOUR(C2-B2)*60+MINUTE(C2-B2)
ensuite
Format -> Number -> More Formats -> Custom number format -> #,##0