Как найти все экземпляры, связанные со значением в другой ячейке - EXCEL 2013 - PullRequest
0 голосов
/ 18 марта 2020

Я застрял с подписью, и я не уверен, что делать дальше.

Постановка проблемы: у меня есть 2 столбца. Столбец А содержит имена, которые могут повторяться. Столбец B содержит даты (ДД-МММ-ГГ). Теперь мне нужно выделить / найти / отметить все случаи, когда конкретное имя в столбце A имеет 2 даты в неделю / 7 дней в столбце B.

Иллюстрация:

Example of data that needs to be marked

На приведенном выше изображении только Джек и Джина должны быть выделены / найдены / помечены, так как они встречаются более одного раза и имеют даты в столбце B с интервалом в одну неделю.

Может ли это быть решена с помощью формул или VBA? Будем весьма благодарны за любые подсказки, подсказки, советы и иллюстрации.

1 Ответ

0 голосов
/ 19 марта 2020

В зависимости от пояснений в комментариях, здесь может быть 4 разных ответа. Если необходимо выделить строки для одного и того же лица, которые точно 7 дней друг от друга, независимо от того, есть ли между ними другая запись (например, Воскресенье - Среда - Воскресенье ), тогда вы можете просто использовать это:

=(COUNTIFS(A:A, A1, B:B, B1+7) + COUNTIFS(A:A, A1, B:B, B1-7))>1

Это будет проверять любые строки, где Имя соответствует текущему {Row Name}, а Дата точно соответствует текущему {Row Date} ± 7

Если у вас не может быть никаких дат между строками, то это немного усложняется. Если у вас Office 365 или Office 2019, то вы можете использовать функции MINIFS и MAXIFS, чтобы найти следующую дату вверх или вниз

=OR(MINIFS(B:B, A:A, A1, B:B, ">" & B1)=(B1+7), MAXIFS(B:B, A:A, A1, B:B, "<" & B1)=(B1-7))

Если у вас более старая версия Office, вы необходимо заменить MINIFS и MAXIFS формулой массива:

=OR(SUMPRODUCT(MIN(B:B+9999*(1-(A:A=A1)*--(B:B>B1))))=B1+7, SUMPRODUCT(MAX(B:B*--(A:A=A1)*--(B:B<B1)))=B1-7)

(вы заметите, что способность "обнулять" значения делает нашу MAXIFS замену проще, чем наша MINIFS один, где мы добавляем 9999 в качестве нашего метода отбрасывания)

Для последних двух случаев, когда вы хотите выделить ВСЕ строки для отдельного лица, когда любое из этих других условий соответствует для любого их рядов, тогда вам понадобится far более сложной формулы массива.

...