Конфликт имени и диапазона дат

410
SiniSter

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

Например "employee" Bill Smith(ячейка B2) имеет проект от 10/17/2018(ячейка C2) до 10/24/2018(ячейка D2). Если я ввожу новый проект для пользователя из 10/18/2018(ячейка C3) в 10/22/2018(ячейка D3), я хочу, чтобы он помечал конфликт.

Как это можно сделать, чтобы сопоставить имя из столбца B, чтобы показать конфликт, выделенный в столбце E?

1
Можете ли вы [отредактировать свой вопрос] (https://superuser.com/posts/1371884/edit), чтобы показать нам некоторые примеры данных и ожидаемый результат? Это поможет нам сделать предложения, которые работают для вас cybernetic.nomad 5 лет назад 0
Числа в вашем примере не следуют легко идентифицируемому логическому шаблону. У вас есть дата начала и окончания, но вы хотите пометить только даты, которые находятся в пределах (начало + 1) - (конец-2)? JaredT 5 лет назад 0

2 ответа на вопрос

1
scenography

Вы можете найти более простую формулу, но вот она. Сначала отсортируйте строки по сотруднику и дате начала. Затем используйте формулу, чтобы проверить, меньше ли дата начала, чем дата окончания в строках выше (для того же сотрудника).

Если n - это число строк выше (для одного и того же сотрудника), то формула имеет вид =IF(n=0, False, C6<MAX(OFFSET(D6, -n, 0, n, 1))). Способ для вычисления n есть COUNTIF(OFFSET(B6, -ROW(B6)+1, 0, ROW(B6)-1, 1), B6).

Вся формула в ячейке E6 =IF(COUNTIF(OFFSET(B6, -ROW(B6)+1, 0, ROW(B6)-1, 1), B6)=0, FALSE, C6<MAX(OFFSET(D6, -COUNTIF(OFFSET(B6, -ROW(B6)+1, 0, ROW(B6)-1, 1), B6), 0, COUNTIF(OFFSET(B6, -ROW(B6)+1, 0, ROW(B6)-1, 1), B6), 1)))

enter image description here

0
Rajesh S

Мое решение имеет другой подход. Формула проверяет конфликт в датах, если имена сотрудников дублируются.

Конфликт формул проверяет даты Adamв Row, 38 & 39но не Adam & Samв Row 39 & 40и так, чтобы не для Sam & Harry.

enter image description here

Как это устроено:

Запишите эту формулу в ячейку D39и заполните.

=IF(AND(A39=A38),IF(OR(B39>=B38,C39<=C38),"Yes","No"),"Diff. Name") 
  • Первая часть формулы проверяет, являются ли имена похожими или нет, если да, то проверяет конфликт в датах.
  • Для новых имен формула возвращает заголовок Diff. Nameи игнорирует проверку конфликта даты.
Ваше решение работает только для последовательных строк, оно не обнаруживает конфликтов в более ранних строках, я думаю, что это тоже намерение. Máté Juhász 5 лет назад 0
@ MátéJuhász, спасибо за наблюдение, проверка Формулы со строки 39 и далее до Гарри в строке 44. Поскольку в строке 38 есть Первая запись, так что я ее пропустил ,,,. Rajesh S 5 лет назад 0
Если вы введете запись для Сэма в строку 45, конфликтуя с его последней строкой, ваша формула не найдет ее. Máté Juhász 5 лет назад 0
@ MátéJuhász ,, если я введу `запись Сэма (находится в строке 40)` снова в формуле `строки 45`, в ячейке` D45` появится 'Diff. Назовите `и если` Сэм вспомнит (из строк 41 и 42) `в формуле` Ряд 46 и 47` покажет `Да` для конфликта в ячейке` D46 & D47` .. и я думаю, это то, что ищет ОП !! Любое ценное предложение изменить Формулу! Rajesh S 5 лет назад 0
** Cont ... ** OP хочет проверить конфликт между датами для повторяющихся имен, и @scenography выбрал тот же метод, что и я. Rajesh S 5 лет назад 0

Похожие вопросы