У меня есть два списка, каждый из которых содержит список временных рамок для разных пользователей. Я хочу определить места, где начальная дата для конкретного пользователя в одном списке совпадает (или в течение 1 дня, если это возможно, но я согласен на точное совпадение) с датой остановки пользователя в другом списке, или наоборот наоборот.

Список 1

User        Start       Stop
User1       1/1/2014    3/15/2014
User1       6/1/2014    12/1/2015
User2       3/1/1998    9/2/2016
User3       4/10/2007   3/5/2011
User3       9/6/2013    9/8/2013
User3       5/20/2014   5/25/2014

Список 2

 User      Start        Stop
 User1     3/15/2014    5/31/2014
 User1     12/5/2014    2/10/2016
 User1     8/2/2016     1/1/2017
 User2     5/15/2010    6/25/2010
 User2     2/1/2012     3/1/2012
 User3     6/1/2012     9/5/2013
 User3     4/25/2014    2/8/2017

В приведенном выше примере:

  • Дата окончания в первой записи для User1 совпадает с датой начала в первой записи для User1 в списке 2. Других совпадающих дат нет, поэтому я бы хотел выделить это событие.

  • Для пользователя 2 в списке 1 показан один большой длительный период времени. Несмотря на то, что в Списке 2 есть два периода времени, полностью совпадающие с периодом Списка 1, даты начала / окончания не совпадают, поэтому они не имеют смысла.

  • Для пользователя 3 дата начала в первой записи в списке 1 - это день после даты остановки в первой записи для пользователя 3 в списке 2. Поэтому я бы хотел как-то это подчеркнуть. Другие временные рамки никак не связаны, поэтому они не имеют смысла.

Может ли кто-нибудь помочь мне найти мои спички? У меня тысячи строк. Спасибо!

РЕДАКТИРОВАТЬ:

Вот скриншоты, показывающие, где я нахожусь -

1 ответ1

1

Чтобы проверить только точные совпадения, проще всего использовать COUNTIFS:
=OR(COUNTIFS(List2[User],[@User],List2[Start],[@Stop]),COUNTIFS(List2[User],[@User],List2[Stop],[@Start]))

Если вы ищете разницу в 1 день, вам нужно использовать SUMPRODUCT:
=OR(SUMPRODUCT((List2[User]=[@User])*(ABS(List2[Start]-[@Stop])<=1)),SUMPRODUCT((List2[User]=[@User])*(ABS(List2[Stop]-[@Start])<=1)))

В приведенном ниже примере я добавил вычисление в новом столбце для list1, вы можете добавить его в оба списка и отфильтровать совпадения.

Вы можете увидеть пошаговые расчеты, перейдя на вкладку формул - "оценить формулу"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .