Excel - ログイン時間を時間単位で正確に入力する

Excel - ログイン時間を時間単位で正確に入力する

この情報は、コンピューターにログインして費やした時間を表す 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

これを行う 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:

ここに画像の説明を入力してください


ここに画像の説明を入力してください

関連情報