Excel ** Разница во времени в часах между датами на разных листах - PullRequest
0 голосов
/ 06 мая 2020

Надеюсь, вы поможете мне с моей проблемой.

У меня есть две таблицы на двух разных листах, которые выглядят так:

Date Time           |   SESSION_ID  

24/01/2020 10:00    |   100         

24/01/2020 11:00    |   100         

14/03/2020 12:00    |   290         

16/03/2020 13:00    |   254         

16/03/2020 14:00    |   100      

Мне нужно сопоставить IDS сеанса между двумя листами и вычислить разницу во времени между двумя совпадениями в часов. Только между последовательными совпадениями.

Также мне нужно сопоставить только идентификаторы сеанса, которые находятся после даты и времени идентификатора сеанса. Пример:

Лист 1:

Date Time           |   SESSION_ID  

24/01/2020 10:00    |   100         

24/01/2020 11:00    |   100         

14/03/2020 12:00    |   300         

17/03/2020 14:00    |   254         

16/03/2020 15:00    |   200      

Лист 2: На этом листе мне нужно найти идентификаторы сеансов этого листа на Листе 1, и получить разницу во времени в часах между ними.

Date Time           |   SESSION_ID  | ***Output [hours]***

24/01/2020 09:00    |   100         |   1

24/01/2020 12:00    |   100         |   0 (or "NA")

14/03/2020 12:00    |   290         |   0 (or "NA")   

16/03/2020 13:00    |   254         |   25

16/03/2020 14:00    |   200         |   1

Объяснение вывода: в первой строке вывод составляет 1 час, потому что через час после этой отметки времени, 24.01.2020 09: 00, на другом листе есть такой же идентификатор. Во второй строке выходные данные равны нулю, потому что после 24.01.2020 12:00 на другом листе нет идентификаторов сеансов = 100. В третьей строке стоит ноль, потому что совпадений нет. Четвертая строка, вывод составляет 25 часов, поскольку разница во времени между двумя сеансами ids = 254.

Заранее благодарим вас за вашу помощь :)

1 Ответ

1 голос
/ 06 мая 2020

Для этого можно использовать MINIFS, что-то вроде следующего:

=MAX(MINIFS($A$2:$A$6,$A$2:$A$6,">"&D2,$B$2:$B$6,E2)-D2,0)
  • MINIFS получает минимальное соответствующее время даты, которое больше, чем время даты поиска.
  • Затем вы просто вычитаете время даты поиска.
  • MAX возвращает 0 в соответствии с вашими требованиями (в противном случае MINIFS(...)-D2 будет отрицательным).

Измените числовой формат выходного столбца на [h].

Если вам нужен выходной столбец на фактическое количество часов, просто умножьте его на 24 и не меняйте числовой формат.

enter image description here

Если у вас нет MINIFS, используйте следующую формулу массива и подтвердите ее, нажав Ctrl + Shift + Введите :

=MAX(MIN(IF(($A$2:$A$6>D2)*($B$2:$B$6=E2),$A$2:$A$6))-D2,0)
...