Как разделить часы в расписании, чтобы учесть работу после полуночи? - PullRequest
1 голос
/ 18 марта 2020

Я использую геолокацию для автоматической записи моего рабочего времени. Но, поскольку я часто работаю после полуночи, мне нужно автоматически «делить» часы на каждый день, когда они работали. Конечный желаемый результат - это только часы, отработанные каждый день, на строку Jan 1st - 2 hours

Например: если я начну работать 1 января и буду работать с 22:00 до 2:00, то за два часа будет начислен счет. 1 / янв, а остальные два часа - 2 / янв.

Ниже приведен пример автоматически сгенерированных данных, основанных на том, когда я физически вхожу в рабочую зону.

Example Data

Итак, одним из возможных решений было бы транспонировать этот список по горизонтали и добавить логи c, которые гласят: «Если не выйдет до полуночи, то добавьте записи« Выход: 23:59 »& Введено: 00 : 00 "на следующий день)

В этом случае следующий шаг может выглядеть следующим образом:

Possible Solution

Но я не знаете, как транспонировать (?) данные или автоматически генерировать недостающие поля в Google Sheets. Или, возможно, есть лучшее решение?

Редактируемая копия таблицы здесь

1 Ответ

1 голос
/ 19 марта 2020

попробовать:

=ARRAYFORMULA(QUERY(IFERROR({DATEVALUE(F2:F), G2:G}), 
 "select Col1,sum(Col2) 
  where Col2 is not null 
  group by Col1 
  label sum(Col2)''"))

0


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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...