我正在使用地理位置自动记录我的工作时间。但是,由于我经常在午夜之后工作,所以我需要自动将“小时”拆分为每天的工作时间。所需的最终结果只是每一行每天的工作时间Jan 1st - 2 hours
例如:如果我从1月1日开始工作,并且从晚上10点至凌晨2点工作,则应将两个小时的费用记入1月1日的费用,而将另外两个小时的费用记为2月1日的费用。
以下是根据我何时进入工作区自动生成的示例数据。
因此,一种可能的解决方案是水平转移此列表,并添加表示“如果未在午夜之前退出,则在第二天添加条目“退出:23:59”和“输入:00:00”)的逻辑)
在这种情况下,下一步可能类似于:
但是我不知道如何在Google表格中转置(?)数据或自动生成缺少的字段。还是有更好的解决方案?
尝试:
=ARRAYFORMULA(QUERY(IFERROR({DATEVALUE(F2:F), G2:G}),
"select Col1,sum(Col2)
where Col2 is not null
group by Col1
label sum(Col2)''"))
E2:
=ARRAYFORMULA(QUERY({QUERY(
IFERROR(SPLIT(SUBSTITUTE(FILTER(B1:B, A1:A="entered"), " at ", "♦"), "♦")),
"select Col1+Col2 label Col1+Col2''"); IFERROR(
IF(INDEX(SPLIT(SUBSTITUTE(FILTER(B:B, A:A="exited"), " at ", "♦"), "♦"),,1)<>
INDEX(SPLIT(SUBSTITUTE(FILTER(B1:B, A1:A="entered"), " at ", "♦"), "♦"),,1),
INDEX(SPLIT(SUBSTITUTE(FILTER(B1:B, A1:A="entered"), " at ", "♦"), "♦"),,1)+
"23:59:59.999",))}, "where Col1 is not null order by Col1", 0))
F2:
=ARRAYFORMULA(QUERY({TRANSPOSE(QUERY(TRANSPOSE(SPLIT(
SUBSTITUTE(FILTER(B:B, A:A="exited"), " at ", "♦"), "♦")),,99^99))*1; IFERROR(
IF(INDEX(SPLIT(SUBSTITUTE(FILTER(B:B, A:A="exited"), " at ", "♦"), "♦"),,1)<>
INDEX(SPLIT(SUBSTITUTE(FILTER(B:B, A:A="entered"), " at ", "♦"), "♦"),,1),
INDEX(SPLIT(SUBSTITUTE(FILTER(B:B, A:A="entered"), " at ", "♦"), "♦"),,1)
+"23:59:59", ))}, "where Col1 is not null order by Col1", 0))
G2:
=ARRAYFORMULA(IF(F2:F="",,F2:F-E2:E))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句