Range1 — это 6/1/2021-11/30/2021, а Range2 — 8/15/2021-3/1/2022 (Range2 может быть любым другим диапазоном дат). Я хочу узнать, сколько месяцев Range2 пересекаются с Range1. Ответ должен быть 4, потому что Nov, Oct, Sep и часть Aug пересекают Range2. И в моей задаче, даже если бы это было 3 месяца и 3 дня, я бы сказал 4 полных месяца. Однако я не считаю первый день месяца полным месяцем.
Например, Range1 — это 6/1/2021 — 11/1/2021, а Range2 — это 2/1/2021 — 10/1/2021, тогда ответ должен быть 4, потому что июнь, июль, август и сентябрь пересекаются с Rang1. Обратите внимание, что я не учитываю 10/1/2021, поэтому ответ не может быть 5.
решение1
Если у вас есть Office 365 Excel, мы можем использовать FILTER для возврата совпадающих месяцев. И Unique для возврата уникального списка. Затем count для подсчета количества месяцев:
=COUNT(UNIQUE(FILTER(MONTH(SEQUENCE(B1-A1,,A1)),ISNUMBER(MATCH(SEQUENCE(B1-A1,,A1),SEQUENCE(B2-A2,,A2),0)),"")))
SEQUENCE возвращает массивы, которые начинаются с первого дня и заканчиваются на день до даты окончания. Затем мы используем MATCH, чтобы проверить, есть ли эта дата во втором списке дат. Если да, мы возвращаем месяц первой даты.
Функция UNIQUE вернет только те номера месяцев, которые есть в обоих списках, а функция COUNT подсчитает их.