Поиск даты в диапазоне дат excel
Для работы с датами в Excel в разделе с функциями определена категория «Дата и время». Рассмотрим наиболее распространенные функции в этой категории.
Как Excel обрабатывает время
Программа Excel «воспринимает» дату и время как обычное число. Электронная таблица преобразует подобные данные, приравнивая сутки к единице. В результате значение времени представляет собой долю от единицы. К примеру, 12.00 – это 0,5.
Значение даты электронная таблица преобразует в число, равное количеству дней от 1 января 1900 года (так решили разработчики) до заданной даты. Например, при преобразовании даты 13.04.1987 получается число 31880. То есть от 1.01.1900 прошло 31 880 дней.
Этот принцип лежит в основе расчетов временных данных. Чтобы найти количество дней между двумя датами, достаточно от более позднего временного периода отнять более ранний.
Пример функции ДАТА
Построение значение даты, составляя его из отдельных элементов-чисел.
Синтаксис: год; месяц, день.
Все аргументы обязательные. Их можно задать числами или ссылками на ячейки с соответствующими числовыми данными: для года – от 1900 до 9999; для месяца – от 1 до 12; для дня – от 1 до 31.
Если для аргумента «День» задать большее число (чем количество дней в указанном месяце), то лишние дни перейдут на следующий месяц. Например, указав для декабря 32 дня, получим в результате 1 января.
Пример использования функции:
Зададим большее количество дней для июня:
Примеры использования в качестве аргументов ссылок на ячейки:
Функция РАЗНДАТ в Excel
Возвращает разницу между двумя датами.
- начальная дата;
- конечная дата;
- код, обозначающий единицы подсчета (дни, месяцы, годы и др.).
Способы измерения интервалов между заданными датами:
- для отображения результата в днях – «d»;
- в месяцах – «m»;
- в годах – «y»;
- в месяцах без учета лет – «ym»;
- в днях без учета месяцев и лет – «md»;
- в днях без учета лет – «yd».
В некоторых версиях Excel при использовании последних двух аргументов («md», «yd») функция может выдать ошибочное значение. Лучше применять альтернативные формулы.
Примеры действия функции РАЗНДАТ:
В версии Excel 2007 данной функции нет в справочнике, но она работает. Хотя результаты лучше проверять, т.к. возможны огрехи.
Функция ГОД в Excel
Возвращает год как целое число (от 1900 до 9999), который соответствует заданной дате. В структуре функции только один аргумент – дата в числовом формате. Аргумент должен быть введен посредством функции ДАТА или представлять результат вычисления других формул.
Пример использования функции ГОД:
Функция МЕСЯЦ в Excel: пример
Возвращает месяц как целое число (от 1 до 12) для заданной в числовом формате даты. Аргумент – дата месяца, который необходимо отобразить, в числовом формате. Даты в текстовом формате функция обрабатывает неправильно.
Примеры использования функции МЕСЯЦ:
Примеры функций ДЕНЬ, ДЕНЬНЕД и НОМНЕДЕЛИ в Excel
Возвращает день как целое число (от 1 до 31) для заданной в числовом формате даты. Аргумент – дата дня, который нужно найти, в числовом формате.
Чтобы вернуть порядковый номер дня недели для указанной даты, можно применить функцию ДЕНЬНЕД:
По умолчанию функция считает воскресенье первым днем недели.
Для отображения порядкового номера недели для указанной даты применяется функция НОМНЕДЕЛИ:
Дата 24.05.2015 приходится на 22 неделю в году. Неделя начинается с воскресенья (по умолчанию).
В качестве второго аргумента указана цифра 2. Поэтому формула считает, что неделя начинается с понедельника (второй день недели).
Для указания текущей даты используется функция СЕГОДНЯ (не имеет аргументов). Чтобы отобразить текущее время и дату, применяется функция ТДАТА ().
Пусть имеется диапазон с датами. Найдем дату из этого диапазона, которая является ближайшей к заданной. Решение этой задачи аналогично решению, изложенного в статье Поиск ЧИСЛА ближайшего к заданному .
Пусть в диапазоне A4:A12 имеется список дат. Будем в нем искать дату из ячейки С4 . Если диапазон не содержит искомого значения, то будет возвращено ближайшее значение.
Искомая дата необязательно должна совпадать с какой-нибудь датой или даже находиться в диапазоне поиска (см. Файл примера ):
Решение
Результат поиска
Примечание
если столбец не отсортирован по возрастанию, то результат непредсказуем
ищется ближайшая к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое расположено выше (номер строки меньше))
столбец м.б. не отсортирован
столбец м.б. не отсортирован
= ИНДЕКС(A4:A12; ПОИСКПОЗ(МИН(ЕСЛИ(A4:A12>=C4;A4:A12;"")); $A$4:$A$12;0);1)
столбец м.б. не отсортирован
ищется ближайшая к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое больше
столбец м.б. не отсортирован
ищется ближайшая к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое меньше
столбец м.б. не отсортирован
Последние 5 решений реализованы с использованием формул массива . Для пошагового просмотра хода вычислений используйте клавишу F9 .
Хорошим решением является формула массива =ИНДЕКС(A4:A12; ПОИСКПОЗ(МИН(ABS(A4:A12-C4));ABS(A4:A12-C4);0))
свободная от всех указанных недостатков, но имеющая свои: формула относительно сложная и является формулой массива .
Совет : т.к. дата в MS EXCEL хранится в числовом виде (см. статью Как Excel хранит дату и время ), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел Ближайшее ЧИСЛО ).
Все классические функции поиска и подстановки типа ВПР (VLOOKUP) , ГПР (HLOOKUP) , ПОИСКПОЗ (MATCH) и им подобные имеют одну важную особенность - они ищут от начала к концу, т.е. слева-направо или сверху-вниз по исходным данным. Как только находится первое подходящее совпадение - поиск останавливается и найденным оказывается только первое вхождение нужного нам элемента.
Что же делать, если нам требуется найти не первое, а последнее вхождение? Например, последнюю сделку по клиенту, последний платёж, самую свежую заявку и т.д.?
Способ 1. Поиск последней строки формулой массива
Если в исходной таблице нет столбца с датой или порядковым номером строки (заказа, платежа. ), то наша задача сводится, по сути, к поиску последней строки, удовлетворяющей заданному условию. Реализовать подобное можно вот такой формулой массива:
- Функция ЕСЛИ(IF) проверяет по очереди все ячейки в столбце Клиент и выводит номер строки, если в ней лежит нужное нам имя. Номер строки на листе нам даёт функция СТРОКА(ROW) , но поскольку нам нужен номер строки в таблице, то дополнительно приходится вычитать 1, т.к. у нас в таблице есть шапка.
- Затем функция МАКС(MAX) выбирает из сформированного набора номеров строк максимальное значение, т.е. номер самой последней строки клиента.
- Функция ИНДЕКС(INDEX) выдаёт содержимое ячейки с найденным последним номером из любого другого требуемого столбца таблицы (Код заказа).
Всё это нужно вводить как формулу массива, т.е.:
- В Office 365 с последними установленными обновлениями и поддержкой динамических массивов - можно просто жать Enter .
- Во всех остальных версиях после ввода формулы придется нажимать сочетание клавиш Ctrl + Shift + Enter , что автоматически добавит к ней фигурные скобки в строке формул.
Способ 2. Обратный поиск новой функцией ПРОСМОТРХ
Я уже писал большую статью с видео про новую функцию ПРОСМОТРХ (XLOOKUP) , которая появилась в последних версиях Office на замену старушке ВПР (VLOOKUP) . При помощи ПРОСМОТРХ наша задача решается совершенно элементарно, т.к. для этой функции (в отличие от ВПР) можно явно задавать направление поиска: сверху-вниз или снизу-вверх - за это отвечает её последний аргумент (-1):
Способ 3. Поиск строки с последней датой
Если в исходных данных у нас есть столбец с порядковым номером или датой, играющей аналогичную роль, то задача видоизменяется - нам требуется найти уже не последнюю (самую нижнюю) строку с совпадением, а строку с самой поздней (максимальной) датой.
Как это сделать с помощью классических функций я уже подробно разбирал, а теперь давайте попробуем использовать мощь новых функций динамических массивов. Исходную таблицу для пущей красоты и удобства тоже заранее преобразуем в "умную" с помощью сочетания клавиш Ctrl + T или команды Главная - Форматировать как таблицу (Home - Format as Table) .
С их помощью этой "убойной парочки" наша задача решается весьма изящно:
- Сначала функция ФИЛЬТР(FILTER) отбирает только те строки из нашей таблицы, где в столбце Клиент - нужное нам имя.
- Потом функция СОРТ(SORT) сортирует отобранные строки по убыванию даты, чтобы самая последняя сделка оказалась сверху.
- Функция ИНДЕКС(INDEX) извлекает первую строку, т.е. выдает нужную нам последнюю сделку.
- И, наконец, внешняя функция ФИЛЬТР убирает из результатов лишние 1-й и 3-й столбцы (Код заказа и Клиент) и оставляет только дату и сумму. Для этого используется массив констант >, определяющий какие именно столбцы мы хотим (1) или не хотим (0) выводить.
Способ 4. Поиск последнего совпадения в Power Query
Ну, и для полноты картины, давайте рассмотрим вариант решения нашей задачи обратного поиска с помощью надстройки Power Query. С её помощью всё решается очень быстро и красиво.
1 . Преобразуем нашу исходную таблицу в "умную" с помощью сочетания клавиш Ctrl + T или команды Главная - Форматировать как таблицу (Home - Format as Table) .
2 . Загружаем её в Power Query кнопкой Из таблицы/диапазона на вкладке Данные (Data - From Table/Range) .
3 . Сортируем (через выпадающий список фильтра в шапке) нашу таблицу по убыванию даты, чтобы самые последние сделки оказались сверху.
4 . На вкладке Преобразование выбираем команду Группировать по (Transform - Group By) и задаем группировку по клиентам, а в качестве агрегирующей функции выбираем вариант Все строки (All rows) . Назвать новый столбец можно как угодно - например Подробности.
После группировки получим список уникальных имен наших клиентов и в столбце Подробности - таблицы со всеми сделками каждого из них, где первой строкой будет идти самая последняя сделка, которая нам и нужна:
5 . Добавляем новый вычисляемый столбец кнопкой Настраиваемый столбец на вкладке Добавить столбец (Add column - Add custom column) и вводим следующую формулу:
Здесь Подробности - это столбец, откуда мы берем таблицы по клиентам, а - это номер строки, которую мы хотим извлечь (нумерация строк в Power Query начинается с нуля). Получаем столбец с записями ( Record ), где каждая запись - первая строка из каждой таблицы:
Осталось развернуть содержимое всех записей кнопкой с двойными стрелками в шапке столбца Последняя сделка, выбрав нужные столбцы:
. и удалить потом ненужный более столбец Подробности щёлкнув по его заголовку правой кнопкой мыши - Удалить столбцы (Remove columns) .
После выгрузки результатов на лист через Главная - Закрыть и загрузить - Закрыть и загрузить в (Home - Close & Load - Close & Load to. ) получим вот такую симпатичную таблицу со списком последних сделок, как и хотели:
При изменении исходных данных результаты нужно не забыть обновить, щёлкнув по ним правой кнопкой мыши - команда Обновить (Refresh) или сочетанием клавиш Ctrl + Alt + F5 .
Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel.
При создании формул массива, операторы массива могут значительно увеличить время расчета. В этой короткой главе рассматриваются два примера, в которых обычная формула справляется с задачей значительно быстрее формулы массива.
Подсчет дат, когда критерий сформулирован в виде текста. На рис. 12.1 показан набор данных с датами в стандартном формате Excel, то есть в виде порядковых чисел. В тоже время, критерии заданы как число (год) и текст (месяц). Цель – подсчитать, сколько дат соответствуют критерию. Проблема в том, что у нас несоответствие формата данных: в столбце A даты как порядковые номера, а критерий – смесь чисел и текста. На рис. 12.1 приведено пять различных формул, которые можно использовать для достижения цели.
Рис. 12.1. Подсчет количества дат (заданных порядковыми номерами) по двум критериям: году (число) и месяцу (текст)
Давайте подробнее изучим работу этих пяти формул.
- Если вы можете позволить себе вспомогательный столбец, функция СЧЁТЕСЛИ будет самым простым решением.
- Функция МЕСЯЦ возвращает число между 1 и 12, а функция ГОД – число (год).
- Хотя Excel требует, чтобы аргумент функции МЕСЯЦ был представлен датой в числовом формате, этот аргумент может распознать и текст. Однако МЕСЯЦ(Окт) вернет ощибку, а вот если добавить к названию месяца любое число, например, 1, то Excel справится. Используйте, как в формуле выражение Окт1, заданное фрагментом F8&1, или 1Окт, заданное фрагментом 1&F8.
- Формулы с вспомогательными столбцами как правило работают быстрее.
- Если у вас Excel 2007 или более поздний, вы можете использовать функции СЧЁТЕСЛИМН и КОНМЕСЯЦА.
- Вам даны год (в виде числа) и месяц (как текст). Это означает, что вы можете вычислить дату начала и конца месяца, а затем определить даты, попажающие между ними.
- Месяц всегда начинается с первого числа, так что вы можете создать нижнюю границу диапазона конкатенацией: " >=1 " &F8&E8. Операции конкатенации возвращают текст, но это не страшно, т.к. функция СУММЕСЛИМН понимает даты в виде текста.
- Вы используете функцию КОНМЕСЯЦА с аргументом число_месяцев равным нулю; это позволяет получить последнюю дату текущего месяца. Функция КОНМЕСЯЦА является динамической: она возвращает 28 или 29 для февраля и 30 или 31 для любого другого месяца.
- Эта формула является самой быстрой, если вам нужно получить решение в одной ячейке.
- Если у вас Excel версии младше 2007 г., вы можете использовать две функции СЧЁТЕСЛИ, одну – для верхнего диапазона, вторую – для нижнего. Фокус в том, чтобы сначала сосчитать все значения, которые равны или меньше верхней границы, а затем вычесть все значения, которые меньше нижней границы.
- В Excel 2003 или более ранней, чтобы добавить функцию КОНМЕСЯЦА, вам нужно выбрать Инструменты → Надстройки → Анализ Данных.
- Эта формула работает быстрее, чем формулы [4] и [5].
- Функции МЕСЯЦ и ГОД возвращают числа, извлекая их из порядкового номера даты.
- Далее сравниваются два фрагмента, каждый полкченный конкатенацией.
- Функция ТЕКСТ используется для представления чисел в виде текста. Второй аргумент этой функции – формат – определяет, как будет представлено число. Вы может конвертировать весь столбец А в текст, состоящий из 7 символов: 3 буквы месяца и 4 цифры года.
Нахождение объема продаж за год. На рис. 12.4 показан пример несоответствие формата года в критерии Е6 (число) и формата дат в диапазоне А2:А6 (порядковый номер). Цель – найти сумму продаж за год. На рисунке представлены шесть вариантов формул, которые могут решить задачу. Обратите внимание, что в формулах [1] и [2] критерии начала и конца года жестко зашиты в коде, т.к. они не могут изменяться. Это 1/1 и 31/12). Формулы размещены на рисунке в порядка увеличения скорости работы.
Рис. 12.4. Формата года в критерии Е6 (число) не соответствует формату дат в диапазоне А2:А6 (порядковый номер)
Как найти самые ранние и самые поздние даты в диапазоне в Excel?
В столбце дат нелегко быстро узнать самую раннюю и самую позднюю дату, если вы не можете отсортировать даты. На самом деле, есть несколько хитрых способов узнать самые ранние и самые поздние даты в Excel легко и удобно.
- Найдите самые ранние и самые свежие даты с функциями
- Найдите самые ранние и последние даты с Kutools for Excel
- Найдите самую раннюю и самую позднюю даты в каждой строке / столбце Excel
Найдите самые ранние и самые свежие даты с функциями
Предположим, вы хотите узнать самую раннюю дату и последнюю дату в диапазоне A1: D7, см. Следующий снимок экрана:
1. Функция Min для поиска самой ранней даты
В пустой ячейке введите формулу = МИН (A1: D7) , и нажмите Enter ключ. Он вернет самые ранние даты в активной ячейке как можно скорее.
2. Небольшая функция для поиска самой ранней даты
Вы также можете применить формулу = МАЛЕНЬКИЙ (A1: D7,1) чтобы быстро получить самые ранние даты.
3. Максимальная функция для поиска последней даты
Если вы хотите узнать последние даты в диапазоне, вы можете ввести формулу = МАКС (A1: D7) , и нажмите Enter ключ.
4. Большая функция для поиска последней даты
Эта формула = НАИБОЛЬШИЙ (A1: D7,1) поможет вам быстро узнать самые свежие даты.
Найдите самые ранние и последние даты с Kutools for Excel
Если у вас есть Kutools for Excel установлен, его Sвыбрать ячейки с максимальным или минимальным значением Инструмент может помочь вам быстро узнать самую раннюю дату и последние даты, не запоминая функции.
Kutools for Excel - Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Бесплатная пробная версия сейчас!
Kutools for Excel - Combines more than 300 Advanced Functions and Tools for Microsoft Excel
1. Выберите диапазон, в котором вы выберете самую последнюю или самую раннюю форму даты. В этом случае выберите диапазон A1: D7 и нажмите Кутулс > Выберите > Выберите ячейки с максимальным или минимальным значением.
2. Задайте настройки, как показано на следующем снимке экрана:
(1) Если вы хотите узнать последнюю дату, пожалуйста, проверьте Максимальное значение вариант; или проверьте Минимальное значение вариант на самую раннюю дату;
(2) Проверьте Ячейка вариант и Только первая ячейка опцию.
3. Нажмите OK. Тогда сразу будет выделена ячейка с самой поздней или самой ранней датой в выделении.
Kutools for Excel - Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Get It Now
Найдите самую раннюю или самую позднюю дату в каждой строке / столбце Excel
Этот Sвыбрать ячейки с максимальным или минимальным значением Утилита Kutools for Excel также поддерживает простой выбор максимального или минимального значения в каждом столбце или в каждой строке .:
Kutools for Excel - Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Бесплатная пробная версия сейчас!
Kutools for Excel - Combines more than 300 Advanced Functions and Tools for Microsoft Excel
Выберите диапазон, из которого вы возьмете самую последнюю или самую раннюю дату, и нажмите Кутулс > Выберите > Выберите ячейки с максимальным или минимальным значением, а затем укажите параметры, как показано на скриншоте ниже:
Проверьте Весь ряд возможность найти последнюю дату в каждой строке:
Проверьте Вся колонка возможность найти последнюю дату в каждой строке:
Kutools for Excel - Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Get It Now
Демо: поиск самых ранних и последних дат в диапазоне или в каждой строке / столбце диапазона
Легко найти максимальное / минимальное значение на основе критериев в другом столбце (по группе) в Excel
Kutools для Excel Расширенные ряды комбинирования Утилита может помочь пользователям Excel быстро и легко определить максимальное значение минимального значения каждого элемента в другом столбце. Полнофункциональная бесплатная 30-дневная пробная версия!
Эта утилита Advanced Combine Rows также может объединять строки и разделять значения по указанным меткам или объединять строки и вычислять их суммы, количество вхождений, максимальные / минимальные значения, средние значения и т. Д.
Читайте также: