
Tengo esta información en una hoja de cálculo de Excel... que representa la cantidad de tiempo dedicado a iniciar sesión en una computadora...
logins time of day amount of time logged in (h:mm)
------ ----------- -------------------------------
login 03:21
logout 05:03 1:42
login 05:47
logout 06:26 0:39
Y quiero convertirlo en esto..
time of day amount of time logged in (mins)
------------- -------------------------------
03:00 - 04:00 39
04:00 - 05:00 60
05:00 - 06:00 16
06:00 - 07:00 26
Parece muy complicado y me estoy haciendo un nudo con las fórmulas de excel.. si alguien sabe alguna fórmula sería genial!
Respuesta1
Aquí hay una forma de hacer esto, no muy elegante, puede que alguien tenga un método más corto para hacer esto y se le ocurra después de ver este feo, tal vez este sea mi intento, funciona exclusivamente con MS365 Version Of Excel
:
• Fórmula utilizada en la celdaE2
=LET(
_Data, A2:B5,
_First, TAKE(_Data,1,-1),
_Adjustments, IF(TAKE(_Data,1,1)="Logout",
VSTACK(_First,MROUND(_First,"1:00"),DROP(_Data,1,1)),
DROP(_Data,,1)),
_H2M, 1440,
_TFormat, "hh:mm",
_TimeFrame, WRAPROWS(UNIQUE(_Adjustments,,1),2,CEILING(MAX(_Adjustments),"1:00:00"))*_H2M,
_TSequence, TOCOL(DROP(REDUCE("",SEQUENCE(ROWS(_TimeFrame)),LAMBDA(_x,_y,
LET(_z,INDEX(_TimeFrame,_y,1),_w,INDEX(_TimeFrame,_y,2),
VSTACK(_x,SEQUENCE(,_w-_z,_z))))),1)/_H2M,2),
_Uniq, UNIQUE(HOUR(_TSequence))/24,
HSTACK(TEXT(_Uniq,_TFormat)&" - "&TEXT(_Uniq+1/24,_TFormat),
TOCOL(BYCOL(LOOKUP(_TSequence,_Uniq)*24=TOROW(_Uniq*24),LAMBDA(_b,SUM(--_b))))))
Caso de prueba 1:
Caso de prueba 2: