Пересечение интервалов дат excel

Пересечение интервалов дат

Одна из типичных задач для пользователя Microsoft Excel. Имеем два диапазона дат вида «начало-конец». Задача состоит в том, чтобы определить пересекаются ли эти диапазоны и, если да, то на сколько дней.

Пересекаются или нет?

Начнем с решения вопроса о том, есть ли пересечение интервалов в принципе? Предположим, что у нас есть таблица рабочих смен сотрудников вот такого вида:

date-intersection1.png

Хорошо видно, что рабочие смены Ярослава и Елены пересекаются, но как это вычислить, не прибегая к построению календарного графика и визуальному контролю? Нам поможет функция СУММПРОИЗВ (SUMPRODUCT).

Вставим в нашу таблицу еще один столбец с формулой, которая выдает логическое значение ИСТИНА в случае пересечения дат:

date-intersection2.png

На сколько дней пересечение?

Если принципиально не просто понимать — пересекаются наши интервалы или нет, а точно знать сколько именно дней попадает в пересечение, то задача усложняется. Рассуждая логически, необходимо «прокачать» аж 3 разных ситуации в одной формуле:

  • интервалы не пересекаются
  • один из интервалов полностью поглощает другой
  • интервалы пересекаются частично

Периодически реализацию подобного подхода я вижу у других пользователей с помощью кучи вложенных друг в друга функций ЕСЛИ и т.п.

На самом деле все можно сделать красиво с помощью функции МЕДИАНА (MEDIAN) из категории Статистические.

date-intersection3.png

Если условно обозначить начало первого интервала за Н1, а конец за К1, и начало второго за Н2 и конец за К2, то в общем виде наша формула может быть записана как:

=МЕДИАНА(Н1;К1+1;К2+1)-МЕДИАНА(Н1;К1+1;Н2)

Компактно и изящно, не правда ли? ;)

Ссылки по теме

  • Как Excel на самом деле работает с датами? Как вычислить количество календарных или рабочих дней между датами?
  • Как построить календарный график (отпусков, тренингов, смен…) в Excel с помощью условного форматирования?
  • Проверка одного или нескольких условий с помощью функций ЕСЛИ (IF)

Skip to content

Условное форматирование пересекающихся дат

На чтение 2 мин. Просмотров 658

Условное форматирование пересекающихся дат

Содержание

  1. Общая формула
  2. Объяснение
  3. Как работает формула

Общая формула

=СУММПРОИЗВ((дата_начала<=даты_окончания)*( дата_окончания>= даты_начала))>1

=SUMPRODUCT((start_date<=end_dates)*(end_date>=start_dates))>1

Объяснение

Для того чтобы выделить ячейки, где даты пересекаются,
вы можете использовать условное форматирование с формулой, основанной на
функции СУММПРОИЗВ. В приведенном примере формула в ячейке E6:

=СУММПРОИЗВ(($C6<=$D$5:$D$9)*($D6>=$C$5:$C$9))>1

=SUMPRODUCT(($C6<=$D$5:$D$9)*($D6>=$C$5:$C$9))>1

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

Как работает формула

Подумайте, как работают перекрывающиеся даты. Чтобы
проект перекрывал даты других проектов, должны быть выполнены два условия:

  1. Дата начала должна быть меньше или равна (<=) по крайней мере до одной другой даты окончания и списка.
  2. Дата окончания проекта должна быть больше или равна (>=) по крайней мере одной другой дате начала в списке.

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

Функция СУММПРОИЗВ идеально подходит этой задачи,
потому что она отлично выполняет сравнения массивов.

Чтобы проверить дату начала проекта снова на все даты
окончания, мы используем это выражение:

($C6<=$D$5:$D$9)

($C6<=$D$5:$D$9)

Для того чтобы проверить дату окончания проекта на все
даты окончания, мы используем это выражение:

($D6>=$C$5:$C$9)

($D6>=$C$5:$C$9)

Полученные массивы значений ИСТИНА ЛОЖЬ умножаются друг
на друга внутри СУММПРОИЗВ. Это автоматически приводит к результатам ИСТИНА и ЛОЖЬ
в 1 и 0, поэтому формула разрешается следующим образом:

=СУММПРОИЗВ({0;1;1;1;1}*{1;1;1;0;0})>1

=СУММПРОИЗВ({0;1;1;0;0})>1

=ИСТИНА

=SUMPRODUCT({0;1;1;1;1}*{1;1;1;0;0})>1

=SUMPRODUCT({0;1;1;0;0})>1

=TRUE

Как найти перекрывающиеся диапазоны дат / времени в Excel?

В этой статье я собираюсь поговорить о том, как найти или проверить, перекрывается ли диапазон дат или временной диапазон с другими в Excel, как показано ниже.
документ найти перекрывающуюся дату и время 1

Проверьте перекрывающиеся диапазоны дат / времени с помощью формулы


стрелка синий правый пузырь Проверьте перекрывающиеся диапазоны дат / времени с помощью формулы

1. Выберите ячейки даты начала, перейдите к Имя Box набрать имя и нажать Enter ключ, чтобы успешно присвоить этому диапазону ранжированное имя. Смотрите скриншот:
документ найти перекрывающуюся дату и время 2

2. Затем выберите даты окончания и дайте ей другое ранжированное имя в Имя Box и нажмите Enter ключ. Смотрите скриншот:
документ найти перекрывающуюся дату и время 3

3. Выберите пустую ячейку, в которую вы поместите приговор, и введите эту формулу. = СУММПРОИЗВ ((A2 = дата начала))> 2, и перетащите дескриптор автозаполнения вниз к ячейкам с формулой. Если в ячейке отображается ИСТИНА, это означает, что относительный диапазон дат перекрывается с другими, иначе диапазоны данных не перекрываются с другими.
документ найти перекрывающуюся дату и время 4

В формуле A2 и B2 — это диапазон дат, который вы хотите проверить, enddate и startdate — это ранжированные имена, которые вы дали на шагах выше.

Наконечник. В некоторых случаях вы можете добавить дни к дате, если вы заинтересованы в быстрой надстройке, я представляю Kutools for ExcelАвтора Добавить дни к дате утилита для вас, вы можете легко справиться с задачей, как показано на следующем снимке экрана. Это полная функция без ограничений в 30 дней, пожалуйста, скачайте и получите бесплатную пробную версию сейчас.

док добавить дни


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (5)


Оценок пока нет. Оцените первым!

Студворк — интернет-сервис помощи студентам

Добрый день. Помогите пожалуйста. Мне надо найти совпадения в периодах работы одного и того же человека на разных предприятиях. Если он одновременно работал в 2 и более местах, тогда необходимо показать начало и конец совпадения по датам. Первую часть я получила, а вторая не получается.

=СУММПРОИЗВ(($A$2:$A$9=A2)*(H2<=$I$2:$I$9)*(I2>=$H $2:$H$9))

где А — номер паспорта, H — начало поступления на работу, I — дата ухода с работы

В следующих 2х столбцах или в отдельной таблице надо прописать начало и конец совпадений.
Если совпадений 2, то при помощи Сводной таблицы нахожу начало и конец периодов дат совпадений, а если больше 2, то минимум и максимум выдают не стыковочные даты. Может есть другой вариант? Спасибо.

Следующая формула покажет любые помехи для последнего ряда. Просто скопируйте эту формулу в ячейку K3 и скопируйте его:

=IF(OR(AND(OR(I3>(I$2:I2)),OR(I3<(J$2:J2))),AND(OR(I3>(I$2:I2)),OR(I3<(J$2:J2)))),"interference","OK")

Обратите внимание, что это формула массива, которая должна быть введена с помощью Ctrl + Shift + Enter , Для получения дополнительной информации о формулах массива вы можете прочитать следующую статью: https://support.office.com/en-us/article/Guidelines-and-examples-of-array-formulas-7D94A64E-3FF3-4686-9372-ECFD5CAA57C7

Если вы хотите показать interference для обоих рядов, то вам придется расширить на I$2:I2 а также J$2:J2 включить весь список. Таким образом, это может быть (например) I$2:I$500 а также J$2:J$500 соответственно. Тем не менее, вы не можете включить саму строку. В противном случае, вы всегда получите interference потому что формула будет проверять себя. Таким образом, вам придется генерировать отдельные формулы для каждой строки, и вы не можете ввести общую формулу и скопировать ее вниз.

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

Примечание. Приведенное выше решение основано на базовом принципе, согласно которому все даты и время в Excel (по существу) представляют собой просто числа, отформатированные как даты или время. Для получения дополнительной информации вы можете прочитать следующее: Изменить формат даты с помощью замены или замены Итак, приведенная выше формула просто проверяет, если дата в столбце I находится между любой предыдущей датой в столбце I и колонка J, Если дата в столбце I является > и предыдущая дата в столбце I а также < по сравнению с датой в столбце J тогда это помеха. То же самое должно быть проверено на дату в столбце K и тогда оба должны быть объединены с OR, Вот и вся формула выше.

Обновить:

На основе комментария, предоставленного @Gordon, формула может быть улучшена с помощью COUNTIFS функция. Просто введите следующую формулу в ячейку C2 и скопируйте его:

=SUM(COUNTIFS(A:A,"<"&A2,B:B,">"&A2),COUNTIFS(A:A,"<"&B2,B:B,">"&B2))

Любое число больше чем 0 означает, что есть хотя бы одно вмешательство. С помощью этой формулы он теперь считает / показывает несколько помех, как вы можете видеть на следующем снимке экрана:

Обратите внимание, что улучшенная формула больше не требует от вас знания диапазона таблицы. Вместо этого вы можете искать по всему столбцу A:A а также B:B для помех.

Понравилась статья? Поделить с друзьями:
  • Пересечение двух списков excel
  • Пересечение двух массивов excel
  • Пересечение графика с осями координат excel
  • Перерасчет формул листа excel
  • Переполнение диска при записи word