
У меня есть эта информация в таблице Excel, которая показывает количество времени, проведенного за компьютером.
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
И я хочу превратить это в это..
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
Это кажется очень сложным, и я уже запутался в формулах Excel... Если кто-то знает формулу, было бы здорово!
решение1
Вот один из способов сделать это, не очень элегантный, возможно, у кого-то есть более короткий способ сделать это, и он придумает его, увидев этот уродливый, возможно, вот моя попытка, работает исключительно с MS365 Version Of Excel
:
• Формула, используемая в ячейкеE2
=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))))))
Тестовый случай 1:
Тестовый случай 2: