Пересечение интервалов дат excel
Добрый день! Помогите, пожалуйста, разобраться.
Есть таблица сеть/бренд/даты отгрузок. Для каждой строки нужно проверить, пересекаются ли даты с другими отгрузками этого же бренда в этой же сети.
Пример данных во вложении.
Знаю, что можно проверить через "суммпроизв" пересечение дат, но что-то не выщло.
Заранее спасибо за помощь!
Добрый день! Помогите, пожалуйста, разобраться.
Есть таблица сеть/бренд/даты отгрузок. Для каждой строки нужно проверить, пересекаются ли даты с другими отгрузками этого же бренда в этой же сети.
Пример данных во вложении.
Знаю, что можно проверить через "суммпроизв" пересечение дат, но что-то не выщло.
Заранее спасибо за помощь! VladkaVladka
Есть таблица сеть/бренд/даты отгрузок. Для каждой строки нужно проверить, пересекаются ли даты с другими отгрузками этого же бренда в этой же сети.
Пример данных во вложении.
Знаю, что можно проверить через "суммпроизв" пересечение дат, но что-то не выщло.
Заранее спасибо за помощь! Автор - VladkaVladka
Дата добавления - 21.10.2018 в 15:54
Формула для "G6". Используется формула массива - завершайте ввод формулы не клавишей Enter (как Вы это обычно делаете), а сочетанием клавиш Ctrl+Shift+Enter.
Формула возвращает не слова "Да", "Нет", а количество пересечений.
Формула для "G6". Используется формула массива - завершайте ввод формулы не клавишей Enter (как Вы это обычно делаете), а сочетанием клавиш Ctrl+Shift+Enter.
Формула возвращает не слова "Да", "Нет", а количество пересечений.
Nic70y, согласна, в примере ошибка. У вас все получилось на тех данных верно. Но если добавить условие, что например, для Березки искать пересечение в датах с Хортицей, то все считается в обратном направлении (. ). Не подскажите, почему.
Nic70y, согласна, в примере ошибка. У вас все получилось на тех данных верно. Но если добавить условие, что например, для Березки искать пересечение в датах с Хортицей, то все считается в обратном направлении (. ). Не подскажите, почему. VladkaVladka
Одна из типичных задач для пользователя Microsoft Excel. Имеем два диапазона дат вида «начало-конец». Задача состоит в том, чтобы определить пересекаются ли эти диапазоны и, если да, то на сколько дней.
Пересекаются или нет?
Начнем с решения вопроса о том, есть ли пересечение интервалов в принципе? Предположим, что у нас есть таблица рабочих смен сотрудников вот такого вида:
Хорошо видно, что рабочие смены Ярослава и Елены пересекаются, но как это вычислить, не прибегая к построению календарного графика и визуальному контролю? Нам поможет функция СУММПРОИЗВ (SUMPRODUCT) .
Вставим в нашу таблицу еще один столбец с формулой, которая выдает логическое значение ИСТИНА в случае пересечения дат:
На сколько дней пересечение?
Если принципиально не просто понимать - пересекаются наши интервалы или нет, а точно знать сколько именно дней попадает в пересечение, то задача усложняется. Рассуждая логически, необходимо "прокачать" аж 3 разных ситуации в одной формуле:
- интервалы не пересекаются
- один из интервалов полностью поглощает другой
- интервалы пересекаются частично
На самом деле все можно сделать красиво с помощью функции МЕДИАНА (MEDIAN) из категории Статистические.
Если условно обозначить начало первого интервала за Н1 , а конец за К1 , и начало второго за Н2 и конец за К2 , то в общем виде наша формула может быть записана как:
=МЕДИАНА( Н1 ;К1+1; К2 +1)-МЕДИАНА( Н1 ;К1+1; Н2 )
В качестве примера подсчета чисел возьмем список с числовыми значениями от 4 до 30 (См. файл примера ).
Будем подсчитывать значения, попадающие в интервал, например, (4;15]. Причем, границы интервала «включает [ ]» и «не включает ( )» будем выбирать из Выпадающего (раскрывающегося) списка.
Примечание: решение без выбора интервалов = СЧЁТЕСЛИМН(A2:A12;”>”&D2;A2:A12;” Предполагается, что границы интервала введены в ячейки D2 и F2. Эти ячейки не должны быть пустыми, даже если одна из границ =0. Если в диапазоне A2:A12 содержатся числовые значения в текстовом формате, то они будут проигнорированы.
Дорогие друзья, в предыдущих постах мы рассмотрели, что такое дата и время в Эксель, как разложить дату на составляющие и собрать её обратно из дня, месяца и года. То есть, мы работали с одной датой. Пора нам теперь поработать и с интервалами дат. В этом посте – распространенные функции обработки временных отрезков. Разберитесь в работе этих функций, и вы уже почти на коне!
В посте о сборе данных из компонент, мы рассматривали пример получения даты, отстоящей от заданной на определенное количество месяцев.
Например, чтобы прибавить к дате в ячейке А1 пять месяцев, мы использовали формулу: =ДАТА(ГОД(А1);МЕСЯЦ(А1)+5;ДЕНЬ(А1)) . На самом деле, есть более простой и наглядный способ выполнить эту операцию – используем функцию ДАТАМЕС(Дата ; Количество_месяцев) .
У функции два обязательных аргумента :
- Дата – исходная дата, к которой будем прибавлять заданное количество месяцев
- Количество месяцев – число месяцев, которое нужно прибавить к дате. Если нужно вычесть месяца – укажите отрицательное число
Приведенный выше пример можно решить с помощью простой формулы: =ДАТАМЕС(А1;5) . Согласитесь, такая запись короче и легче для восприятия.
Часто нужно знать – какой день недели был (будет) в определенную дату. Как бы вы решали такую задачу? Вручную сложно, если нужно обработать несколько десятков, сотен, тысяч дат.
Воспользуйтесь функцией ДЕНЬНЕД(Дата ; Тип) . Она возвращает порядковый номер дня недели и имеет два аргумента :
- Дата, для которой нужно определить день недели – обязательный аргумент
- Тип – необязательный параметр, который указывает какой день недели считать первым. Например, в странах восточной Европы первый день недели – понедельник, в США – воскресенье. В любом случае, формула может считать первым днем любой день недели. Если аргумент не указан – первым днем считается воскресенье. При записи формулы – Excel выведет подсказку с перечнем возможных параметров
Функция ДЕНЬНЕД в Эксель
Когда вы получили порядковый номер дня недели, можно использовать, например, функцию условия ЕСЛИ для присвоения ему текстового имени, или обработать как-то иначе.
Нет ничего проще, чем определить количество дней между датами. Просто вычтите более позднюю дату из ранней. Например, в ячейке А1 – дата начала работы над проектом, а в А2 – дата сдачи проекта. Тогда количество дней между ними можно посчитать так: =А2-А1 .
Эту же процедуру можно выполнить с помощью функции ДНИ(Конечная дата ; Начальная дата) . Видимой разницы между первым и вторым способами нет, они возвращают одинаковые результаты. Пользуйтесь этими способами ими по ситуации.
Если вам известен некий период, и нужно знать, какую часть календарного года он занимает, используйте функцию ДОЛЯГОДА(Начальная_дата ; Конечная_дата; Базис) . Как видите, у функции 3 агрумента :
- Начальная дата – дата старта изучаемого периода – обязательный аргумент
- Конечная дата – дата окончания период – обязательный аргумент
- Базис – базовые значения длительности года. При введении параметра программа выведет подсказку по выбору этого аргумента.
Например, проект начался 10.08.2015 и закончился 08.05.2016. Чтобы определить долю периода от календарного года, запишем формулу: =ДОЛЯГОДА(«10.08.2015″;»08.05.2016»;1) . Получим результат 0,7432. Отформатируем его в процентном формате и получим 74% года.
Чтобы получить дату последнего дня месяца – используйте функцию КОНМЕСЯЦА(Дата ; Количество_месяцев) . Эта функция возвращает последний день заданной даты, или отстоящей от нее на определенное количество месяцев. Она использует 2 обязательных аргумента :
- Дата – базовый день месяца, к которому нужно прибавить месяца и вывести последний итогового месяца
- Количество месяцев – сколько месяцев нужно прибавить к дате. Укажите этот параметр равным нулю, если хотите получить последний день месяца, заданного в аргументом «Дата».
Если у вас есть дата, и вам нужно узнать порядковый номер этой недели в году, используйте функцию НОМНЕДЕЛИ(Дата;Базис):
- Аргумент «Дата» — это ваша дата, которая принадлежит к искомой неделе (обязательный аргумент)
- Базис – необязательный аргумент, указывающий какой день недели считается первым. По умолчанию для функции – это воскресенье.
Этими функциями вы будете широко пользоваться при работе с датами. Важно знать все их, ведь желанный результат часто достигается комбинированием нескольких функций. Так что, не останавливайтесь и читайте дальше о функциях работы с датами. Тем более, следующий пост будет посвящен функциям подсчета рабочих дней. Вы должны изучить их обязательно, ведь в Excel нет других способов считать рабочие дни, кроме этих функций. Возвращайтесь!
Вам так же может быть интересно:
Одна из типичных задач для пользователя Microsoft Excel. Имеем два диапазона дат вида «начало-конец». Задача состоит в том, чтобы определить пересекаются ли эти диапазоны и, если да, то на сколько дней.
Пересекаются или нет?
Начнем с решения вопроса о том, есть ли пересечение интервалов в принципе? Предположим, что у нас есть таблица рабочих смен сотрудников вот такого вида:
Хорошо видно, что рабочие смены Ярослава и Елены пересекаются, но как это вычислить, не прибегая к построению календарного графика и визуальному контролю? Нам поможет функция СУММПРОИЗВ (SUMPRODUCT) .
Вставим в нашу таблицу еще один столбец с формулой, которая выдает логическое значение ИСТИНА в случае пересечения дат:
На сколько дней пересечение?
Если принципиально не просто понимать – пересекаются наши интервалы или нет, а точно знать сколько именно дней попадает в пересечение, то задача усложняется. Рассуждая логически, необходимо “прокачать” аж 3 разных ситуации в одной формуле:
- интервалы не пересекаются
- один из интервалов полностью поглощает другой
- интервалы пересекаются частично
Периодически реализацию подобного подхода я вижу у других пользователей с помощью кучи вложенных друг в друга функций ЕСЛИ и т.п.
На самом деле все можно сделать красиво с помощью функции МЕДИАНА (MEDIAN) из категории Статистические.
Если условно обозначить начало первого интервала за Н1 , а конец за К1 , и начало второго за Н2 и конец за К2 , то в общем виде наша формула может быть записана как:
Как определить, находится ли дата между двумя датами или выходными в Excel?
Иногда вам может потребоваться определить или проверить, находится ли дата между двумя датами или выходными в Excel. Эта статья покажет вам следующие хитрые способы проверить, находится ли дата между двумя датами или выходными в Excel.
Quickly determine if a date falls between two given dates:
The Select Specific Cells utility of Kutools for Excel can help you quickly determine if dates in a specific range are falling between two given dates. Find them and select them easily. Download the full feature 60-day free trail of Kutools for Excel now!
Определите, находится ли дата между двумя датами в Excel
Предположим, вам нужно определить, попадают ли даты в столбце A между 7 и 1. пожалуйста, сделайте следующее:
1. В пустой ячейке с надписью «Ячейка B2» скопируйте и вставьте в нее приведенную ниже формулу и нажмите Enter ключ.
Внимание: Эта формула проверяет, находится ли дата между 7 и 1. Если дата попадает в этот период, она вернет дату; если дата не попадает в этот период, он вернет текст НЕПРАВДА.
2. Продолжая выбирать ячейку результата, перетащите маркер заполнения вниз, чтобы получить все результаты. Смотрите скриншот:
Теперь вы можете определить, попадает ли дата в указанный диапазон дат или нет.
Определите, находится ли дата между двумя датами в Excel с помощью Kutools for Excel
Здесь вам порекомендуют потрясающий инструмент - Выбрать определенные ячейки полезности Kutools for Excel. Этот инструмент поможет вам не только узнать все даты, которые попадают между двумя заданными датами, но и сразу выбрать все соответствующие ячейки дат.
Перед его применением необходимо сначала скачайте и установите.
1. Выберите диапазон дат, по которым вы хотите определить, попадают ли они между двумя датами, а затем щелкните Кутулс > Выберите > Выбрать определенные ячейки. Смотрите скриншот:
2. в Выбрать определенные ячейки в диалоговом окне выберите Ячейка вариант в Тип выбора раздел, а затем укажите Больше и Менее даты и, наконец, нажмите OK кнопку.
Вы можете видеть, что ячейки даты, которые находятся между двумя датами, выбираются немедленно. Смотрите скриншот:
Если вы хотите получить бесплатную (30-дневную) пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Определите, приходится ли дата на выходные с формулами и кодом VBA
Вы можете определить, приходится ли дата в столбце A на выходные, выполнив следующие действия:
Метод А. Использование формулы для проверки того, приходится ли свидание на выходные.
1. В пустой ячейке скопируйте и вставьте в нее приведенную ниже формулу и нажмите Enter ключ.
=IF(OR(WEEKDAY(A2)=1,WEEKDAY(A2)=7),A2,FALSE)
Эта формула определяет, приходится ли свидание на выходные или нет. Если дата выпадает на выходные, она вернет дату; если дата не выпадает на выходные, она вернет текст НЕПРАВДА.
2. Продолжайте выбирать ячейку результата, затем перетащите маркер заполнения вниз, чтобы получить все результаты.
Метод Б. Использование пользовательской функции для проверки того, приходится ли свидание на выходные.
1. нажмите ALT + F11 вместе, чтобы открыть окно Microsoft Visual Basic для приложений.
2. В окне Microsoft Visual Basic для приложений щелкните Вставить >> Модулии вставьте следующий макрос в окно модуля.
3. Нажмите одновременно клавиши Alt + Q, чтобы закрыть окно Microsoft Visual Basic для приложений.
4. В пустой ячейке введите формулу в строку формул и нажмите кнопку Enter ключ.
=IsWeekend(A2)
Если он возвращает текст Правда, дата в ячейке A2 - выходной; и если он возвращает текст Ложь, дата в ячейке A2 не приходится на выходные.
Определите, приходится ли свидание на выходные, с помощью замечательного инструмента
На самом деле вы можете преобразовать все даты в название дня недели, а затем проверить выходные дни на основе субботы или воскресенья. Здесь Применить формат даты полезности Kutools for Excel может помочь вам легко решить проблему.
Перед его применением необходимо сначала скачайте и установите.
1. Выберите диапазон дат и нажмите Кутулс > Формат > Применить форматирование даты. Смотрите скриншот:
2. в Применить форматирование даты диалоговое окно, выберите среда в Форматирование даты поле, а затем щелкните OK кнопку.
Теперь выбранные даты сразу конвертируются в дни недели. Вы можете определить, приходится ли свидание на выходные или нет, напрямую по его содержанию. Смотрите скриншот:
Заметки:
- Преобразованные результаты работали непосредственно с исходными данными;
- Эта утилита поддерживает расстегиватьCtrl + Z».
Если вы хотите получить бесплатную (30-дневную) пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Статьи по теме:
Преобразование даты в день недели, месяц, название года или число в Excel
Говорит, что вы вводите дату в одну ячейку, и отображается как 12/13/2015. Есть ли способ показать только месяц или день недели или текст названия месяца или дня недели, например, декабрь или воскресенье? Методы, описанные в этой статье, могут помочь вам легко преобразовать или отформатировать любые даты, чтобы в Excel отображалось только название дня недели или месяца.
Быстро конвертируйте дату рождения в возраст в Excel
Например, вы получаете ряд различных данных о дате рождения в Excel, и вам нужно преобразовать эти даты рождения, чтобы отобразить их точное значение возраста в Excel, как бы вы хотели выяснить? В этой статье перечислены несколько советов, как легко преобразовать дату рождения в возраст в Excel.
Сравните даты, если они больше другой даты в Excel
Предположим, у вас есть список дат и вы хотите сравнить эти даты с указанной датой, чтобы узнать дату, которая больше указанной даты в списке, что бы вы сделали? В этой статье мы покажем вам методы сравнения дат, если они больше другой даты в Excel.
Сумма значений между двумя диапазонами дат в Excel
Когда на вашем листе есть два списка, один - это список дат, а другой - список значений. И вы хотите суммировать значения только между двумя диапазонами дат, например, суммировать значения между 3/4/2014 и 5/10/2014, как вы можете быстро их вычислить? Методы, описанные в этой статье, окажут вам услугу.
Добавить дни к дате, включая выходные и праздничные дни или исключая их, в Excel
В этой статье говорится о добавлении дней к заданной дате, исключая выходные и праздничные дни, что означает добавление рабочих дней (с понедельника по пятницу) только в Excel.
Определите, находится ли дата между двумя датами или выходными с помощью Kutools for Excel
Kutools for Excel включает более 300 удобных инструментов Excel. Бесплатная пробная версия без ограничений в течение 60 дней. Загрузите бесплатную пробную версию прямо сейчас!
Есть ли в Excel встроенные средства для проверки, пересекаются ли отрезки времени
например одна лампочка горела в интервале времени c t1 до t2
а другая лампочка горела в интервале с t3 до t4
пересекаются ли?
и если пересекаются, то true
банально конечно можно решить, но может кто знает красивый способ
есть у меня алгоритм. все решается одной простой операцией:
если (т2-т3)*(т4-т1)
больше 0 - пересекаются
равно 0 - соприкасаются
меньше 0 - не пересекаются
решите только к чему отнести 0 - к пересекаются или не пересекаются.
а красивый или нет - Вам решать.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
есть у меня алгоритм. все решается одной простой операцией:
если (т2-т3)*(т4-т1)
больше 0 - пересекаются
равно 0 - соприкасаются
меньше 0 - не пересекаются
решите только к чему отнести 0 - к пересекаются или не пересекаются.
а красивый или нет - Вам решать.
да, нормально, спасибо
уж лучше чем банальное
Function FuncT(t1,t2,t3,t4):Boolean
if ((t1
FuncT=False
goto ex;
FuncT=True
ex:
end FuncT
есть у меня алгоритм. все решается одной простой операцией:
если (т2-т3)*(т4-т1)
больше 0 - пересекаются
равно 0 - соприкасаются
меньше 0 - не пересекаются
решите только к чему отнести 0 - к пересекаются или не пересекаются.
а красивый или нет - Вам решать.
Правильно ли я реализовал функцию?!
неверно работает
Вы уверены, что если больше, то пересекаются?
может наоборот?
Function CallT(t1, t2, t3, t4) As Boolean
'Функция для проверки пересечения двух диаппазонов дат
'Если есть пересечение, то выдает True
If ((t2 - t3) * (t4 - t1)) > 0 Then
CallT = True
Else
CallT = False
End If
End Function
Читайте также: