Найти заданную дату excel


С помощью функции ВПР() можно выполнить поиск в столбце таблицы (называется ключевым столбцом), а затем вернуть значение из той же строки, но другого столбца. Здесь рассмотрим более сложный поиск: искать будем не среди всех значений ключевого столбца, а только среди значений удовлетворяющих дополнительному условию.

Точное совпадение

Сначала вкратце напомним работу ВПР() — VLOOKUP() с аргументом

интервальный_просмотр

= ЛОЖЬ (когда ищется значение в ключевом столбце точно соответствующее критерию).

Задача: Для заданного пользователем Товара найти в таблице соответствующую цену и количество (см. файл примера ).

Решение очевидно ( =ВПР(B10;B13:C15;2;0) ) и подробно рассмотрено

в статье про ВПР()

.

Предположим, что исходная таблица усложнилась — добавился столбец с номерами заказов.

Теперь необходимо искать заданный Товар не по всему столбцу Товар, а лишь в строках, относящегося к заданному пользователем Заказу.

Найдем количество и цену для товара Мандарины в Заказе 2.

В ячейках

А21

и

В21

введем номер Заказа и наименование товара.

В ячейке

С21

введем

формулу массива

:

=ЕСЛИ(МАКС(ЕСЛИ((Таб1[Заказ]=A21)*(Таб1[Товар]=B21);Таб1[Количество];»»));МАКС(ЕСЛИ((Таб1[Заказ]=A21)*(Таб1[Товар]=B21);Таб1[Количество];»»));»В заказе нет искомого Товара»)

Аналогичную формулу можно использовать для поиска цены.

Ближайшее ЧИСЛО (ДАТА)

В предыдущей задаче предполагалось, что наименование Товара присутствует в Заказе в единственном экземпляре и точно соответствует критерию поиска. Однако, существует класс задач, когда это не так. Особенно часто встречаются задачи поиска ближайшего ЧИСЛА (если точное значение в ключевом столбце не найдено, то выводится ближайшее).


Примечание

. Формулы, созданные для поиска ближайших ЧИСЕЛ, работают и для ДАТ, т.к. даты в MS EXCEL

хранятся в числовом формате

.

Сначала вкратце напомним работу ВПР() — VLOOKUP() с аргументом

интервальный_просмотр

= ИСТИНА (когда ищется значение в ключевом столбце точно или приблизительно совпадающее с критерием).

Задача: Для указанной пользователем Даты найти соответствующую ей цену (см. файл примера ).

Решение — формула =ВПР(B10;Табл2.1;2) , где

Табл2.1

таблица в формате MS EXCEL 2007

.

Напомним, что для ВПР() с аргументом

интервальный_просмотр

= ИСТИНА требуется сортированный по возрастанию ключевой столбец (Дата). При отсутствии в столбце точного совпадения выводится наибольшее значение, которое меньше искомого. При наличии нескольких одинаковых подходящих значений в ключевом столбце, учитывается, то что ниже. Поэтому Цена выведена 220р., а не 240 и не 230.

Теперь необходимо для заданной пользователем Даты найти соответствующую ей цену, но эта Цена и дата должны относится к заданному пользователем Продавцу.

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

В ячейках

А25

и

В25

введем Продавца и дату.

Прежде чем писать формулу, определимся, что значит «ближайший». На самом деле можно дать несколько определений, нужный вариант выбирается исходя из условий решаемой задачи.

Вот несколько возможных определений:

1. В терминах функции ВПР() «ближайший» — это наибольшее значение, которое меньше искомого. При наличии нескольких одинаковых подходящих значений в ключевом столбце, учитывается, то что расположено ниже в таблице. Понятно, что такое значение может быть не обязательно ближайшим.

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

3. Ближайшее, т.е. та дата, которая ближе, чем все остальные (м.б. раньше или позже заданной). Если таких дат несколько, то учитывается нижняя и выводится соответствующая ей цена.

Еще несколько вариантов предложено в файле примера .

Понятно, что для каждого определения ближайшего требуется своя

формулы массива

(все их можно найти в файле примера ).

Формулы для определения цены, как правило, используют результат формулы определяющей ближайшую дату.

Ближайшее время

Поскольку как и дата, так и время в EXCEL хранятся в числовом формате (см. здесь

https://excel2.ru/articles/kak-excel-hranit-datu-i-vremya

), то формулы будут работать и для дат с указанием времени, например 03.12.2018 15:06.

В файле примера есть лист для демонстрации работы функции ВПР() для столбца данных со временем (требуется сортировка по возрастанию).

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

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

Выберите нужное действие

  • Сведения о работе запросов на набор значений с датами

  • Поиск самой последней или самой давней даты

  • Поиск самых последних или самых давних дат для записей в категории или группе

  • Одновременный поиск самых последних и самых давних дат

Сведения о работе запросов на набор значений с датами

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

  • Когда сотрудник в последний раз продавал товар? Ответ поможет определить наиболее и наименее продуктивных сотрудников.

  • Когда клиент делал заказ в последний раз? Если в течение определенного периода заказов не было, его можно перенести в список неактивных клиентов.

  • У кого ближайшие дни рождения?

Правила создания и использования запросов на набор значений

Для создания запроса на набор значений следует сначала создать запрос на выборку. В зависимости от требуемых результатов вы можете установить для запроса порядок сортировки или преобразовать его в итоговый запрос. При преобразовании используются агрегатные функции, например Max или Min для возврата наибольшего или наименьшего значения и First или Last для получения самой последней или самой давней даты. Итоговые запросы и агрегатные функции используются только для поиска данных, которые попадают в набор групп или категорий. Предположим, что нужно найти объем продаж за указанную дату для каждого города, в котором работает компания. В этом случае города становятся категориями (необходимо собрать данные по городам), поэтому можно использовать итоговый запрос.

В процессе работы помните, что в запросе (независимо от его типа) должны использоваться поля, содержащие описательные данные, например имена клиентов, и поля со значениями даты, среди которых будет производиться поиск. Кроме того, значения даты должны находиться в полях с типом данных «Дата/время». Запросы, описанные в этой статье, не будут правильно работать со значениями дат в текстовых полях. Кроме того, при использовании итогового запроса поля данных должны содержать информацию о категории, например о городе или стране.

Выбор между запросом на набор значений и фильтром

Чтобы определить, стоит ли создавать запрос на набор значений или же следует применить фильтр, примите во внимание следующее:

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

  • Если вы хотите получить все записи, в которых даты совпадают с определенной датой, предшествуют ей или следуют за ней, используйте фильтр. Например, для просмотра дат продаж между апрелем и июлем нужно применить фильтр. Подробное обсуждение фильтров выходит за пределы данной темы.

    Дополнительные сведения о создании и использовании фильтров см. в статье «Применение фильтра для просмотра отдельных записей в базе данных Access».

К началу страницы

Поиск самой последней или самой давней даты

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

Фамилия

Имя

Адрес

Город

Страна или регион

Дата рождения

Дата приема на работу

Авдеев

Григорий

Загородное шоссе, д. 150

Москва

РФ

05-фев-1968

10-июн-1994

Кузнецов

Артем

ул. Гарибальди, д. 170

Пермь

РФ

22-май-1957

22-ноя-1996

Дегтярев

Дмитрий

ул. Кедрова, д. 54

Красноярск

РФ

11-ноя-1960

11-мар-2000

Зуева

Ольга

ул. Губкина, д. 233

Тверь

РФ

22-мар-1964

22-июн-1998

Белых

Николай

пл. Хо Ши Мина, д. 15, кв. 5

Москва

РФ

05-июн-1972

05-янв-2002

Комарова

Лина

ул. Ляпунова, д. 70, кв. 16

Красноярск

РФ

23-янв-1970

23-апр-1999

Зайцев

Сергей

ул. Строителей, д. 150, кв. 78

Омск

РФ

14-апр-1964

14-окт-2004

Ермолаева

Анна

ул. Вавилова, д. 151, кв. 8

Иркутск

РФ

29-окт-1959

29-мар-1997

При этом вы можете ввести образец данных в новую таблицу вручную или скопировать этот пример таблицы в программу для работы с электронными таблицами, например Microsoft Excel, а затем импортировать полученный листа в таблицу с помощью Access.

Создание простого запроса на набор значений

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.

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

    -или-

    Дважды щелкните таблицу, а затем нажмите кнопку Закрыть.

    Если вы используете пример данных из предыдущего раздела, добавьте в запрос таблицу Employees.

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

    Если вы работаете с примером таблицы, то добавьте поля «Фамилия», «Имя» и «Дата рождения».

  4. В поле, которое содержит искомые наибольшие или наименьшие значения (при использовании примера таблицы — поле «Дата рождения), в строке Сортировка выберите порядок сортировки По возрастанию или По убыванию.

    При сортировке по убыванию будут возвращены самые последние даты, при сортировке по возрастанию — самые давние.

    Важно: В строке Сортировка следует установить значение только для полей, содержащих даты. Если порядок сортировки задан по другому полю, запрос не вернет ожидаемых результатов.

  5. На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.

  6. Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить Изображение кнопки.

  7. Сохраните запрос и оставьте его открытым, чтобы использовать на следующих шагах.

Как вы видите, этот тип запросов на набор значений дает ответы на основные вопросы, например «Кто из сотрудников самый старший или самый молодой?». Ниже описано, как с помощью выражений и других условий создавать более точные и гибкие запросы. Запрос по описанным ниже условиям выдает ближайшие дни рождения у трех сотрудников.

Добавление условий в запрос

Примечание: В этих инструкциях предполагается, что вы используете запрос, описанный в предыдущем разделе.

  1. Откройте запрос, созданный на предыдущих шагах, в Конструкторе.

  2. В бланке запроса в столбце справа от столбца «Дата рождения» скопируйте и вставьте или введите следующее выражение: Expr1: DatePart(«m»; [Дата рождения]). Затем нажмите кнопку Выполнить.

    Функция DatePart извлекает месяц из значения в поле «Дата рождения».

  3. Переключитесь в Конструктор.

  4. Справа от первого выражение вставьте или введите следующее выражение: Expr2: DatePart(«d»; [Дата рождения]). Затем нажмите кнопку Выполнить.

    В этом случае функция DatePart извлекает день из значения в поле «Дата рождения».

  5. Переключитесь в Конструктор.

  6. Для обоих введенных выражений снимите флажки в строке Показать, щелкните строку Сортировка и выберите пункт По возрастанию.

  7. Нажмите кнопку Запустить.

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

    Для продолжения работы с примером данных откройте Конструктор. Затем в строке Условия отбора столбца Дата рождения введите следующее выражение:

    Month([Дата рождения]) > Month(Date()) Or Month([Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date())

    Это выражение делает следующее: Месяц([Дата рождения]) > Month(Date()) проверяет дату рождения каждого сотрудника, чтобы узнать, приходится ли она на следующий месяц, и, если это так, включает эти записи в запрос. Месяц([Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date()) в выражении проверяет даты рождения, которые происходят в текущем месяце, чтобы узнать, приходится ли на день рождения или после текущего дня. Если это условие истинно, функция включает эти записи в запрос. Краткое выражение игнорирует все записи, в которых день рождения приходится на период с 1 января до даты выполнения запроса.

    Другие примеры выражений условий для запросов можно найти в статье Примеры условий запроса.

  9. На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.

    Чтобы просмотреть следующие три дня рождения, введите 3.

  10. Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить Изображение кнопки.

Если отображается больше записей, чем требовалось

Если в данных есть записи с одинаковым значением даты, запрос может возвращать больше записей, чем вы указали. Например, вы можете создать запрос на набор значений для получения записей о трех сотрудниках, н запрос вернет четыре, поскольку у Измайлова и Быкова дни рождения совпадают, как указано в следующей таблице.

Фамилия

ДатаРождения

Белых

26.09.1968

Бутусов

02.10.1970

Измайлов

15.10.1965

Быков

15.10.1969

Если отображается меньше записей, чем требовалось

Предположим, что вы создали запрос, возвращающий наибольшие или наименьшие пять записей в поле, но он возвращает только три. Как правило, чтобы решить эту проблему, нужно открыть запрос в Конструкторе и проверить строку Условия отбора для столбцов в бланке запроса.

Дополнительные сведения об условиях см. в статье Примеры условий запроса.

Если выводятся повторяющиеся записи

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

Дата поставки

Продавец

12.11.2004

Ковалев

12.11.2004

Маслов

12.10.2004

Попов

12.10.2004

Попов

12.10.2004

Ковалев

Третья и четвертая записи кажутся одинаковыми, но это может объясняться тем, что Попов обработал два различных заказа, отгруженных в один день.

Чтобы избежать отображения повторяющихся записей, можно выполнить одно из двух действий в зависимости от требуемого результата. Вы можете изменить структуру запроса, добавив поля, которые позволят различить записи, например поля «КодЗаказа» и «КодКлиента». Или, если достаточно показать только одну из повторяющихся записей, вы можете выбрать отображение только уникальных записей, задав значение Да для свойства запроса Уникальные значения. Чтобы задать значение этого свойства, в Конструктор щелкните правой кнопкой мыши в любом свободном месте в верхней половине окна конструктора запросов и выберите в контекстном меню команду Свойства. В окне свойств найдите свойство Уникальные значения и задайте для него значение Да.

Дополнительные сведения о работе с повторяющимися записями см. в статье Поиск, скрытие или удаление повторяющихся данных.

К началу страницы

Поиск самых последних или самых давних дат для записей в категории или группе

Для поиска самых последних или самых давних дат для записей, входящих в группы или категории, используются итоговые запросы. Итоговый запрос представляет собой запрос на выборку, в котором для вычисления значений определенного поля используются агрегатные функции, например Min, Max, Sum, First, и Last

В этом разделе предполагается, что вы управляете мероприятием — проводите промежуточное мероприятие, освещение, питание и другие аспекты крупных функций. Кроме того, управляемые вами события могут попадать в несколько категорий, например мероприятий по запуску продукции, уличных ярлам и концертам. В этом разделе объясняется, как ответить на распространенный вопрос: когда будет следующее событие по категориям? Другими словами, когда будет следующий выпуск продукта, следующий концерт и так далее.

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

Инструкции в данном разделе предполагают использование следующих трех таблиц:

Таблица «Типы мероприятий»    

КодТипа

Тип мероприятия

1

Презентация товара

2

Корпоративное мероприятие

3

Частное мероприятие

4

Мероприятие по сбору средств

5

Выставка-продажа

6

Лекция

7

Концерт

8

Выставка

9

Уличная ярмарка

Таблица «Клиенты»    

КодКлиента

Компания

Контакт

1

Contoso, Ltd. НИИ

Николай Белых

2

Лесопитомник

Регина Покровская

3

Fabrikam

Елена Матвеева

4

Лесопитомник

Афанасий Быков

5

А. Datum

Лилия Медведева

6

Adventure Works

Максим Измайлов

7

железа

Арина Иванова

8

Художественная школа

Полина Кольцова

Таблица «Мероприятия»    

КодМероприятия

Тип мероприятия

Клиент

Дата мероприятия

Цена

1

Презентация товара

Contoso, Ltd.

14.04.2003

10 000 ₽

2

Корпоративное мероприятие

Лесопитомник

21.04.2003

8000 ₽

3

Выставка-продажа

Лесопитомник

01.05.2003

25000 ₽

4

Выставка

НИИ железа

13.05.2003

4 500 ₽

5

Выставка-продажа

Contoso, Ltd.

14.05.2003

55 000 ₽

6

Концерт

Художественная школа

23.05.2003

12 000 ₽

7

Презентация товара

А. Datum

01.06.2003

15 000 ₽

8

Презентация товара

Лесопитомник

18.06.2003

21 000 ₽

9

Мероприятие по сбору средств

Adventure Works

22.06.2003

1300 ₽

10

Лекция

НИИ железа

25.06.2003

2450 ₽

11

Лекция

Contoso, Ltd.

04.07.2003

3800 ₽

12

Уличная ярмарка

НИИ железа

04.07.2003

5500 ₽

Примечание: Действия, описываемые в данном разделе, предполагают, что таблицы «Клиенты» и «Типы мероприятий» находятся на стороне «один» отношения «один-ко-многим» с таблицей «Мероприятия». В данном случае таблица «Мероприятия» имеет с этими таблицами общие поля «КодКлиента» и «КодТипа». Итоговые запросы, описанные в следующих разделах, не будут работать, если эти связи отсутствуют.

Как добавить эти данные в базу данных?

Чтобы добавить эти примеры таблиц в базу данных, можно скопировать данные в Excel и импортировать их, за исключением нескольких исключений.

  • При копировании таблиц «Типы мероприятий» и «Клиенты» в Excel не копируйте столбцы «КодТипа» и «КодКлиента». Access добавит значения первичных ключей при импорте листов — это поможет сэкономить время.

  • После импорта таблиц необходимо открыть таблицу «Мероприятия» в Конструкторе и преобразовать столбцы «Тип мероприятия» и «Клиент» в поля подстановки. Для этого щелкните столбец Тип данных для каждого поля и выберите пункт Мастер подстановок.

    В ходе создания полей подстановки Access заменяет текстовые значения столбцов «Тип мероприятия» и «Клиент» числовыми значениями из исходных таблиц.

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

Создание итогового запроса

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.

  2. Дважды щелкните таблицы, которые вы хотите использовать. Таблицы появятся в верхней части конструктора запросов.

    При использовании приведенных выше примеров добавьте таблицы «Мероприятия» и «Типы мероприятий».

  3. Дважды щелкните поля таблицы, которые вы хотите использовать в запросе. На данном этапе к запросу следует добавить только поля категорий или групп и поле значений.

    При использовании данных из трех приведенных выше таблиц следует добавить либо поле «Тип мероприятия» из таблицы «Типы мероприятий», либо поле «Дата мероприятия» из таблицы «Мероприятия».

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

    Например, если вы хотите просмотреть мероприятия с категорией «Частное мероприятие», в строку Условия отбора в столбце Тип мероприятия следует ввести выражение <>»Частное мероприятие».

    Другие примеры выражений условий для запросов можно найти в статье Примеры условий запроса.

  5. Преобразуйте этот запрос в итоговый запрос следующим образом:

    На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.

    В бланке запроса появится строка Итоги.

  6. Убедитесь, что в строке Итоги поля каждой группы или категории выбран пункт Группировка по, и выберите для строки Итоги поля значения (поля с наибольшими или наименьшими значениями) функцию Max или Min.

    Функция Max возвращает наибольшее значение числового поля и самое последнее значение даты или времени в поле с типом данных «Дата/время». Функция Min возвращает наименьшее значение в числовом поле и самую раннюю дату или время в поле «Дата/время».

  7. На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.

    В этом случае для просмотра результатов в режиме таблицы выберите параметр Все и нажмите кнопку Выполнить.

    Примечание: В зависимости от функции, выбранной на шаге 6, Access изменяет имя поля значения в запросе на Максимум_ИмяПоля или Минимум_ИмяПоля. В нашем примере поле будут переименовано в Максимум_Дата мероприятия или Минимум_Дата мероприятия.

  8. Сохраните запрос и переходите к следующим шагам.

Запрос не возвращает названия продуктов и другую информацию о них. Чтобы просмотреть дополнительные данные, необходимо создать второй запрос, который включает в себя запрос, который вы только что создали. Далее описано, как это сделать.

Создание второго запроса для отображения более подробных данных

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.

  2. Перейдите на вкладку «Запросы», а затем дважды щелкните итоговую таблицу, созданную в предыдущем разделе.

  3. Откройте вкладку Таблицы и добавьте таблицы, которые вы использовали в итоговом запросе, а также таблицы, в которых содержатся дополнительные данные. Если вы использовали три таблицы из примера, добавьте в новый запрос таблицы «Типы мероприятий», «Мероприятия» и «Клиенты».

  4. Свяжите поля в итоговом запросе с соответствующими полями в родительских таблицах. Для этого перетащите каждое поле из итогового запроса на соответствующее поле в таблице.

    При использовании примеров данных из трех таблиц перетащите столбец «Тип мероприятия» из итогового запроса на поле «Тип мероприятия» в таблице «Типы мероприятий». Затем перетащите столбец Максимум_Дата мероприятия в итоговом запросе на поле «Дата мероприятия» в таблице «Мероприятия». Благодаря объединению новый запрос на выборку связывает данные из итогового запроса с данными из других таблиц.

  5. Добавьте в запрос поля с дополнительной информацией из других таблиц.

    При использовании примеров данных из трех таблиц можно добавить поля «Компания» и «Контакт» из таблицы «Клиенты».

  6. При желании вы можете задать порядок сортировки по одному или нескольким столбцам. Например, для вывода категорий в алфавитном порядке задайте в строке Сортировка столбца Тип мероприятия значение По возрастанию.

  7. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

    Результаты запроса отображаются в режиме таблицы.

Совет:  Если вам не нравится, что заголовок столбца Цена называется Максимум_Цена или Минимум_Цена, то откройте запрос в Конструкторе и в столбце «Цена» в бланке запроса введите Цена: Максимум_Цена или Цена: Минимум_Цена. После этого в заголовке столбца в режиме таблицы будет выводиться название Цена.

К началу страницы

Одновременный поиск самых последних и самых давних дат

Запросы, созданные ранее в этой статье, возвращают либо наибольшие, либо наименьшие значения, но не оба набора сразу. Если вы хотите отобразить оба набора значений в одном представлении, следует создать два запроса (один для получения наибольших значений и другой для получения наименьших значений), а затем объединить и сохранить результаты в одной таблице.

Поиск наибольших и наименьших значений и отображение этих данных в таблице состоит из следующих основных этапов:

  • Создание запроса на поиск наибольших значений и запроса на поиск наименьших значений или, при необходимости группировки данных, создание итоговых запросов, использующих функции Min и Max.

  • Преобразование запроса на поиск наибольших значений (или итогового запроса на поиск максимальных значений) в запрос на создание таблицы и выполнение этого запроса.

  • Преобразование запроса на поиск наименьших значений (или итогового запроса на поиск минимальных значений) в запрос на добавление для добавления записей в таблицу наибольших значений.

    Ниже описано, как это сделать.

    Создание запросов

    1. Создайте запросы на поиск наибольших и наименьших значений.

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

      Если используются таблицы примеров из предыдущего раздела, используйте только данные из таблицы «Мероприятия». Используйте в обоих запросах поля «Тип мероприятия», «Клиент» и «Дата мероприятия» из таблицы «Мероприятия».

    2. Сохраните оба запроса, присвоив им описательные имена, например «Наибольшее значение» и «Наименьшее значение», и оставьте их открытыми для использования на следующих этапах.

Создание запроса на создание таблицы

  1. В запросе на поиск наибольших значений, открытом в Конструкторе:

    На вкладке Конструктор в группе Тип запроса нажмите кнопку Создание таблицы.

    Откроется диалоговое окно Создание таблицы.

  2. В поле Имя таблицы введите имя таблицы, которая будет хранить записи с наибольшими и наименьшими значениями. Например, введите Наименьшие и наибольшие значения, а затем нажмите кнопку ОК.

    Каждый раз при выполнении запроса вместо отображения результатов в режиме таблицы запрос будет создавать таблицу и замещать значения текущими данными.

  3. Сохраните и закройте запрос.

Создание запроса на добавление

  1. Откройте запрос на поиск наименьших значений в Конструкторе.

    На вкладке Разработка в группе Тип запроса выберите команду Добавить.

  2. Откроется диалоговое окно Добавление.

  3. Введите то же имя, которое вы указали в диалоговом окне Создание таблицы.

    Например, введите Наименьшие и наибольшие значения, а затем нажмите кнопку ОК. Каждый раз при выполнении запроса вместо отображения результатов в режиме таблицы он будет добавлять записи в таблицу «Наибольшие и наименьшие значения».

  4. Сохраните и закройте запрос.

Выполнение запросов

  • Теперь вы готовы запустить оба запроса. В области навигации дважды щелкните запрос на поиск наибольших значений и нажмите кнопку Да при появлении подтверждения. Затем дважды щелкните запрос на поиск наименьших значений и нажмите кнопку Да при появлении подтверждения.

  • Откройте таблицу с набором записей в режиме таблицы.

Важно: Если при попытке выполнения запроса на создание или добавление ничего не происходит, проверьте, не появляется ли в строке состояния Access следующее сообщение:

Данное действие или событие заблокировано в режиме отключения.

Если выводится это сообщение, сделайте следующее:

  • Откройте панель сообщений, если она скрыта. Для этого на вкладке Работа с базами данных в группе Показать или скрыть нажмите кнопку Панель сообщений.

  • На панели сообщений нажмите Параметры.

    Откроется диалоговое окно Параметры безопасности Microsoft Office.

  • Выберите Включить это содержимое, а затем кнопку ОК.

  • Выполните запрос еще раз.

К началу страницы

Для работы с датами в 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. Поэтому формула считает, что неделя начинается с понедельника (второй день недели).

Скачать примеры функций для работы с датами

Для указания текущей даты используется функция СЕГОДНЯ (не имеет аргументов). Чтобы отобразить текущее время и дату, применяется функция ТДАТА ().

Дата из текста (ДАТАИЗСТРОКИ)

Описание работы

Часто необходимо извлечь дату из ячейки, которая содержит длинный текст. Задача может усложнится тем, что дата может быть как в начале, в конце или середине текста. Еще сложнее дело будет обстоять, что дата в тексте имеет разные форматы.

Извлечь в данном случае дату из текста стандартными методами крайне сложно.

С помощью функции на VBA =ДАТАИЗСТРОКИ это сделать очень просто. Функция найдет дату в тексте вне зависимости от формата ее записи и расположения ее в строке. Также распознаются даты на русском и английском языке.

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

Аналогичный пример, но дата расположена в конце строки.

Извлечение даты из любой части текста и особенности функции. Обойтись стандартными функциями тут практически невозможно. Алгоритм функции из надстройки справится с эти очень просто.

Синтаксис функции

Функция =ДАТАИЗСТРОКИ(ТЕКСТ;[En]) имеет два аргумента:

  • ТЕКСТ — Текст, из которого необходимо извлечь дату
  • [En] — Необязательный параметр. Если дата содержит наименование месяца на английском языке, укажите данный параметр равный 1. По умолчанию равно 0.

Извлечение даты на английском языке из текста

Excel найти дату в тексте

Преобразовать дату в текст Excel.

Узнать дату в Excel по дню недели, т.д.

Отображение дат в виде дней недели

​ текст (функция так​ «ГЛАВНАЯ»-«Стили»-«Условное форматирование»-«Создать правило».​преобразование в Excel даты в текст;​3.​ «Текст содержит…».​Для выполнения этой задачи​ «Автоматическая дата в​ (В4) в мае​ изменений в Excel».​

​ «Текст». Диалоговое окно​​ вычисления в зависимости​ 02.01.1900 г имеет​ начинается у людей​: может лучше так?​ является датой? Дата​vikttur​ и опишите что​ же позволяет быстро​Выберите ниже: «Использовать формулу​применение в формулах Excel текста;​

Форматирование ячеек для отображения дня недели

​Выделение сегодняшней даты в​Теперь пишем наш​ используется функция ТЕКСТ.​ Excel».​

​ месяце (В3) в​​Можно​​ функции «Текст» заполнили​ от формата числа,​​ порядковый номер 2,​​ куда раньше, чем​​ =И(ЯЧЕЙКА(«формат»;A1)=»D1″;ЕЧИСЛО(A1))если ввести текст,​​ вводится в формате​​: Даты по возрастанию?​​ нужно найти может​

​ найти дату в​​ для определения форматируемых​​поиск текста в Excel.​​ Excel.​​ текст, который должен​​Скопируйте указанные ниже данные​​Предположим, что вместо фактической​​ 2015 году (В2).​​узнать дату в​ так.​ текста, т.д. Если​ дата 27.01.2015 г.​​ у Excel.​​ среагирует сразу​ дд.мм.гггг. Спасибо заранее!​=МАКС(ИНДЕКС(‘2012′!$C$2:$N$6;ПОИСКПОЗ(B4;’2012’!$B$2:$B$6;);))​

Преобразование дат в дни недели в текстовом формате

​ попроще формула найдется.​ тексте Excel);​

​ ячеек».​Решение всех этих (и​

​ выделять ячейку. В​

​Можно написать разные​

​Нажимаем «ОК». Получилась​

​ формат чисел стоит​

​ имеет порядковый номер​

​Однако по-хорошему формула​

​ЕЧИСЛО – если число​

​Чтобы найти дату в​ многих других) вопросов​ таблица с датами.​ нашем примере –​

Выделить дату, день недели в Excel при условии.

​ сможете найти в​ окончания обучения» ячейка​ заливки – это​A​ ​ «понедельник». Существует несколько​ ячейках В6 и​ дней или была​
​ по столбцу. Получилось​ этом читайте в​ привычный для нас​
​ формат соблюден и​ в первых днях​ так как в​ мой вариант со​ стоит дата. Нужно,​ЕОШ – если ошибка;​

​ нажмите на кнопку​ меню «ТЕКСТ». Надеемся​ с сегодняшней датой​ цвет, которым будут​
​Дата​ способов отображения дат​ В7. Получилось так.​ некоторое время назад,​ так.​
​ статье «Преобразовать текст​ формат даты, нужно​ при вводе отрицательных​ ​ начала 1900 года.​

​ ячейке может быть​ СМЕЩЕНИЕМ​ чтобы эта дата​ЕОШИБКА – если ошибка;​
​ «Формат», чтобы задать​​ что наши статьи​ окрасилась. Выделяем это​
​ окрашиваться выделенные ячейки.​19-фев-2007​

​ в виде дней​В ячейке В6​ пр. Это может​Даты в столбце​ в число Excel».​ установить в ячейке​ чисел(при системе дат​The_Prist​ введено просто чилсо​»=МАКС(СМЕЩ(ДВССЫЛ(АДРЕС(ПОИСКПОЗ(B4;’2012′!B:B;0);3;;;»2012″));0;1;1;12))»​ соответствовала последней заполненной​ЕСЛИОШИБКА – если ошибка​

​ желаемый цвет заливки​ о преобразовании текста​ столбец (D2:D6). Заходим​ Если мы нажмем​3-янв-2008​ недели.​ стоит формула, написанная​ пригодиться при планировании​ B написаны как​Теперь рассмотрим,​ формат даты. Какими​ от 1900 года)​: Вить, если это​ тоже — например​Владимир​ ячейке в строке​ (это не логическая​

Операции над текстом в Excel

​ для ячеек. Например,​ в Excel помогут Вам​ в «Условное форматирование»​ на стрелку и​Формула​Примечание:​ в ячейке С6.​ поставок, сроков работ,​ текст (текстовый формат​

​как преобразовать порядковый номер​ способами вызвать диалоговое​ ячейка будет подсвечена,​

  • ​ число 2 будет​
  • ​ 55​
  • ​: Если фамилии не​ Смирнов на листе​
  • ​ функция, но ее​ зеленый. И нажмите​
  • ​ и сократят время​
  • ​ и выбираем «Правила​
  • ​ из списка выберем​

​Описание (результат)​ Представленные в этой статье​В ячейке В7​ при оформлении договора,​значений​ дат в формат​ окно и сменить​ т.к. текст там​ в формате даты​Владимир​ нужно искать, то:​

Как найти и выделить неправильное значение и формат даты в Excel

​ «2012».​ легко оптимизировать под​ ОК на всех​ работы:)​ выделения ячеек» -​ строку «1,2,3,4,5», то​=ТЕКСТ(A2;»дддд»)​ снимки экрана созданы​ стоит формула, написанная​ т. д.​). Формат​ «Дата»​ формат, смотрите в​ дату даже рядом​ — не вижу​:​=ПРОСМОТР(7^7;1/(‘2012′!C2:N2>0);’2012’!C2:N2)​ber$erk​ данную задачу);​ открытых окнах.​Если ячейки содержат неправильный​ «Дата…». Из списка​ выйдет окно, в​Вычисление дня недели для​ в Excel 2016. Если​

Поиск формата текста вместо даты в Excel

​ в ячейке С7.​Как узнать дату в​в ячейках​.​ статье «Формат Excel»​ не будет напоминать.​ противоречий.​=ЯЧЕЙКА(«формат»;A1)=»D1″​

​bvb​: «=МАКС(ДВССЫЛ(АДРЕС(ПОИСКПОЗ(B4;’2012′!B:B;0);3;;;»2012″)):ДВССЫЛ(АДРЕС(ПОИСКПОЗ(B4;’2012′!B:B;0);14;;;»2012»)))»​ЕПУСТО – если пусто;​

  1. ​Как видно на рисунке​ формат значений –​ правил выбираем –​
  2. ​ котором можно выбрать​ указанной даты и​ вы используете другую​
  3. ​Здесь мы вычисляли​Excel​(внешний вид данных)стоит​У нас такая​ тут.​vikttur​Другой вопрос, что​Самир Мамедов​: Еще раз, всем​bvb​ЕЛОГИЧ – если логическое​

​ все даты в​ это может привести​ «Сегодня». Получилось так.​ цвет и шрифта,​

​ возврат его полного​ версию, то в​ дату по дню​.​ – «Общий». Если​ таблица с датами,​Уточним еще один момент​: Да не об​ при смене только​: Дело в том,​ спасибо!​: Блин, работает! Огромное​ значение;​ формате текст выделились​ к ошибочным вычислениям​Из списка правил​ другие параметры и​ названия (понедельник)​ ней может быть​ недели. Но в​Например, нам нужно​ нужно, то можно​ написанными порядковыми номерами.​-​ этом предупреждаю!​ формата(без изменения данных​

​Появился вопрос. Если​ спасибо! Завтра буду​ЕНД – если недоступное​ цветом:​ в формулах. Например,​

  • ​ можно выбрать другое​ цвет.​=ТЕКСТ(A3;»ддд»)​ немного другой интерфейс,​ Excel можно проделать​
  • ​ узнать дату, которая​ изменить формат ячеек​Преобразуем порядковые номера дат​формат даты в Excel.​
  • ​Добавить проверку на​
  • ​ в ячейке) -​
  • ​ ячейке А1 стереть​ в строке все​ тестить более углубленно,​ значение (#Н/Д);​В условиях форматирования мы​
  • ​ вместо типа значения​
  • ​ правило. Например, чтобы​Нажимаем «ОК». Так​
  • ​Вычисление дня недели для​ но если не​
  • ​ и обратную операцию​ будет в третий​
  • ​ «Общий» на формат​ в привычные для​
  • ​В Excel два​
  • ​ число >= (возможно,​

​ формула не сработает.​ дату и ввести​ строки пустые, то​

Поиск последней даты

​ но на первый​​ЕНЕЧЁТ – если нечетное​
​ использовали простую функцию​ «Дата», ячейка содержит​
​ ячейка с датой​ же устанавливаем правило​ указанной даты и​ указано иное, функции​
​ — определить по​ вторник марта 2015​ «Текстовый».​

​ нас даты.​ формата – формат​ и​Предлагаю вариант с​ например текст, то​ формула выдает 00.01.1900​
​ взгляд все ок)​
​ значение;​ =ЕТЕКСТ(), у которой​ тип значения «Текст».​ окончания срока окрашивалась​

​ с текстом «Вс».​​ возврат его сокращенного​ будут такими же.​ дате день недели.​ г.​

​Как скопировать дату​​Если нужно изменить​ячейки​The_Prist​ подсветкой через УФ​ его формат (формат​Можно ли сделать​ikki​ЕЧЁТ – если четное​ всего только 1​

​ При подготовке больших​​ за несколько дней​

​ Получилось так.​​ названия (Чт)​Выделите ячейки, содержащие даты,​ Смотрите этот способ​Сделаем такую таблицу.​ в текстовом формате​

​ формат дат в​​и формат​

​: Вить, да поняли​​ — тогда сработает​ ячейки А1) опять​ так, чтобы вместо​
​: =ПРОСМОТР(999999;ИНДЕКС(‘2012′!$B$2:$N$6;ПОИСКПОЗ($B4;’2012’!$B$2:$B$6;0);))​
​ значение;​
​ аргумент – ссылка​

​ объемов данных следует​ раньше, за месяц,​Заполнять дни недели можно​

​Условное форматирование в Excel​​ которые должны отображаться​
​ в статье «День​

​Пояснение таблицы:​​ в формат «Дата»,​ этом же столбце,​значения​ мы все это,​ даже при тупом​ останется ДАТА, что​ этого она выдавала​Михаил С.​ЕССЫЛКА – если ссылка;​ на проверяемую ячейку.​ выполнить проверку всех​ в течение месяца,​ копированием. Смотрите статью​поможет выделить день​ в виде дней​ недели по дате​

​Год​​ смотрите в статье​
​ то выделяем ячейки,​

​, написанного в ячейке.​​ не горячись. Но​ изменении формата. Если​
​ приводит к неправильному​ 0 или пустую​: Блиииин, у меня​

​ЕФОРМУЛА – если формула.​

​ Арес ссылки в​​ типов значений на​ т.д. В одних​

​ «Копирование в Excel».​

​ недели, рабочие или​​ недели.​ в Excel».​
​– год, в​ «Преобразовать текст в​ устанавливаем нужный формат​Формат ячейки​
​ ведь автор пока​ не дата -​ результату.​ ячейку?​ подсмотрел, только тему​

​При желании можете проверить​​ аргументе функции ЕТЕКСТ​

​ соответствие определенному формату.​​ и тех же​

​Так можно выделять​​ выходные дни, дату.​На вкладке​
​Как к дате​ котором определяем дату.​

​ дату Excel».​​ дат.​в​ этого не просил​ ячейка будет с​Сергей​ShAM​ открыл, нарисовал формулу​ все функции в​ должен быть относительным,​ Например, таблица заполнялась​ ячейках может быть​

Как проверить является ли данное в ячейке ДАТОЙ без макроса

​ ячейки с любым​​ Здесь перечислены варианты​
​Главная​ прибавить рабочие дни​Месяц​Бывает, что в​Если нужно перенести​Excel​ — откуда нам​

​ красной заливкой.​​: показали бы в​

​: .​​=ПРОСМОТР(999999;ИНДЕКС(‘2012′!$C$2:$N$6;ПОИСКПОЗ($B4;’2012’!$B$2:$B$6;);))​ действии экспериментальным путем.​ так как будет​ данными из разных​ установлено несколько правил​ текстом.​

​ формул настройки ячеек​​щелкните раскрывающийся список​​ или вычесть, смотрите​

​– порядковый номер​​ ячейках дата написана​ эти данные в​– это внешний​ знать надо оно​Бахтиёр​ примере что проверяете​ShAM​практически один-в-один​bvb​ проверятся каждая ячейка​

​ источников где в​​ условного форматирования. как​2.Например, нам нужно​ таблицы Excel для​ в поле​ в статье «Как​ месяца. (май -​ одним числом (например,​ другой столбец, то​ вид данных в​ или нет? Особенно​: +1​ дата для экселя​: или через формат.​:)​: Добрый день!​

​ выделенного диапазона. Если​​ разный способ фиксировалась​ выделить данные по​ в большой таблице​ выделения их по​Числовой​ посчитать рабочие дни​

​ пятый месяц в​​ так. 20160112). Нам​ выделяем ячейки, копируем​

​ ячейке — шрифт,​​ если учесть, что​vikttur​ число, если у​

​bvb​​Просто увидел эти​Проблема следующая. Написал​ текущая проверяемая ячейка​ дата. С такой​ условию, смотрите в​

​ найти ячейки с​​ условию.​, выберите пункт​ в Excel» тут.​ году, декабрь -​ нужно преобразовать это​
​ в другой столбец​ размер шрифта; число,​ автора вроде как​: И я не​ вас идут данные​
​: Более чем развернутый​ ДВССЫЛ, АДРЕС и​ две формулы:​ содержит текст (а​ таблицей нельзя выполнять​ статье «Как выделить​ ошибками (#ЗНАЧ!, #ССЫЛКА!,​1.​

​Другие числовые форматы​​Как посчитать количество​

​ 12й, т.д.).​​ число в дату,​ и устанавливаем формат​ записанное с разрядами;​ полностью устроил ответ​
​ вижу. Но вопрос:​ вперемешку реально число​ ответ!) Спасибо!​ ужаснулся :)​

​1. ПОИСКПОЗ(B16;’2012′!C:C;0) Находит​​ не дату) –​ различных вычислений. Визуально​ ячейки в Excel».​ #Н/Д). У нас​Выделить в Excel день​
​и откройте вкладку​ дней между датами​День недели​ разделить точками год,​ ячеек «Дата».​ ​ в каком месте​ из 7-го сообщения,​ нужна ли такая​ и число (дата)​p.s. очень стыдно​ikki​
​ на другом листе​ это неправильное значение​
​ сложно заметить где​
​По сравнению с возможностями​ такая таблица.​ недели.​Число​ без праздников, например,​- порядковый номер​ месяц, день. Как​Здесь в столбце B​ ячейки будут написаны​

​ а мы так​​ дата автору темы?​ то проблематично что​
​ быть глупым(​: Михаил С., :)))​ номер строки по​

​ Excel. Тогда функция​​ в неправильном формате​ Excel по обработке​Выделяем таблицу, заходим​Например, выделим субботы​.​ отпускные, как посчитать​ дня в неделе​ это сделать, смотрите​ дата стоит в​ данные – слева,​ — разминаемся​ЦитатаСамир Мамедов написал:​ то проверить (мое​bvb​

Поиск в MS EXCEL ДАТЫ ближайшей к заданной

Пусть имеется диапазон с датами. Найдем дату из этого диапазона, которая является ближайшей к заданной. Решение этой задачи аналогично решению, изложенного в статье Поиск ЧИСЛА ближайшего к заданному.

Пусть в диапазоне A4:A12 имеется список дат. Будем в нем искать дату из ячейки С4. Если диапазон не содержит искомого значения, то будет возвращено ближайшее значение.

Искомая дата необязательно должна совпадать с какой-нибудь датой или даже находиться в диапазоне поиска (см. Файл примера ):

Решение

Результат поиска

Примечание

ищется наибольшее значение, которое меньше, чем искомое значение (если искомая дата меньше, чем минимальное значение из диапазона, то будет возвращена ошибка #Н/Д)

если столбец не отсортирован по возрастанию, то результат непредсказуем

ищется ближайшая к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое расположено выше (номер строки меньше))

столбец м.б. не отсортирован

= ИНДЕКС(A4:A12; ПОИСКПОЗ(МАКС(ЕСЛИ(A4:A12 =C4;A4:A12;»»)); $A$4:$A$12;0);1)

ищется наименьшее значение, которое больше, чем искомое значение (если искомая дата больше, чем максимальное значение из диапазона, то будет возвращена ошибка #Н/Д)

столбец м.б. не отсортирован

ищется ближайшая к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое больше

столбец м.б. не отсортирован

ищется ближайшая к критерию дата (если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое меньше

столбец м.б. не отсортирован

Последние 5 решений реализованы с использованием формул массива. Для пошагового просмотра хода вычислений используйте клавишу F9.

Как видно из таблицы, применение функции ВПР() со значением аргумента интервальный_просмотр равным ИСТИНА, имеет недостатки. Во-первых, найденное значение м.б. далеко не ближайшим (задав в качестве критерия дату 06.02.2009 получим не ближайшую дату 07.02.2009, а наибольшее значение, которое меньше, чем искомое значение, т.е. 05.01.2009). Во-вторых, если искомая дата меньше, чем минимальное значение из диапазона, то будет возвращена ошибка #Н/Д. В-третьих, требуется сортировка списка, что не всегда удобно.

Хорошим решением является формула массива
=ИНДЕКС(A4:A12; ПОИСКПОЗ(МИН(ABS(A4:A12-C4));ABS(A4:A12-C4);0))

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

Совет: т.к. дата в MS EXCEL хранится в числовом виде (см. статью Как Excel хранит дату и время), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел Ближайшее ЧИСЛО).

Поиск дат в тексте документа Word

Поиск дат формата ДД.ММ.ГГГГ в тексте документа при помощи стандартного поиска, регулярного выражения и надстройки, написанной на языке VBA.

Поиск заданной даты в текстовом документе

Чаще всего при поиске какого-либо значения, даты здесь не исключение, используется самый простой способ – стандартный поиск. Чтобы воспользоваться поиском, необходимо перейти на вкладку «Главная» в приложении Word и в группе кнопок «Редактирование» зайти в меню кнопки «Найти» и выбрать пункт «Найти», в результате чего появляется панель «Навигация», которую можно поместить в левую либо правую часть окна. Аналогичный результат можно получить при помощи горячих клавиш Ctrl+F (сокращение от слова Find). Остается внести искомое значение в специальное поле для поиска и получить результат в виде выделенных цветом найденных значений.

Поиск всех дат в документе

Заданную дату, как и любое другое значение, найти в тексте документа не составило труда, а как найти все даты в тексте документа? Рассмотрим решение этой задачи на примере дат самого распространенного формата ДД.ММ.ГГГГ. Для реализации сложного поиска значений с проверкой на соответствие заданному шаблону можно использовать регулярные выражения. Для даты в формате ДД.ММ.ГГГГ регулярное выражение можно написать в виде [0-9]<2>.[0-9]<2>.[0-9]<4>, где после первой пары символов из интервала от нуля до девяти стоит точка, затем такая же пара символов с точкой и в конце выражения еще четыре символа, представляющие собой цифры. Чтобы найти все даты в документе остается перейти в диалоговое окно расширенного поиска, в параметрах поиска включить использование подстановочных знаков и в строку поиска ввести регулярное выражение. Окно расширенного поиска можно вызвать из меню кнопки «Найти» либо из выпадающего списка в строке поиска в панели «Навигация».

Поиск определенных дат по условию

При работе с отчетами может возникать задача поиска дат с проверкой на соответствие заданному условию, например, поиск просроченных дат в плане поставки оборудования. В этом случае задача еще несколько усложняется и решить ее можно при помощи программного кода на встроенном в приложения Office языка программирования Visual Basic for Application.

В диалоговом окне программы пользователю достаточно задать контрольную дату в формате ДД.ММ.ГГГГ, цвет выделения и одно из условий, а программа произведет поиск всех дат в документе (либо в выделенной его части), сравнение их с контрольной датой и выделение заданным цветом при выполнении выбранного условия.

Видео по работе с надстройкой

Преобразование дат из текстового формата в формат даты

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

Даты, отформатированные как текст, выравниваются по левому краю в ячейке (вместо выравнивания по правому краю). Если включена Проверка ошибок , Текстовая дата с двумя цифрами года также может помечаться индикатором ошибки: .

Поскольку функция проверки ошибок в Excel распознает даты в текстовом формате с двузначным номером года, можно воспользоваться средством автозамены и преобразовать их в даты в формате даты. С помощью функции ДАТАЗНАЧ можно преобразовывать в даты большинство типов текстовых дат.

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

Вы можете использовать индикатор ошибки для преобразования дат из текстового формата в формат даты.

Примечания: Сначала убедитесь в том, что в Excel включена проверка ошибок. Для этого:

Щелкните Файл > Параметры > Формулы.

В Excel 2007 нажмите кнопку Microsoft Office и выберите Параметры ExcelExcel 2007формулы.

При проверке ошибокустановите флажок Включить фоновую проверку ошибок. Все найденные ошибки помечаются треугольником в левом верхнем углу ячейки.

В разделе правила проверки ошибоквыделите ячейки, которые содержат годы, представленные 2 цифрами.

Выполните указанные ниже действия, чтобы преобразовать дату в текстовом формате в обычную дату.

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

Совет: Чтобы отменить выделение ячеек, щелкните любую ячейку на листе.

Нажмите появившуюся рядом с выделенной ячейкой кнопку ошибки.

В меню выберите команду Преобразовать XX в 20XX или Преобразовать XX в 19XX. Если вы хотите отключить индикатор ошибки, не преобразуя число, нажмите кнопку пропустить ошибку.

Текстовые даты с двумя цифрами года преобразуются в стандартные даты с четырьмя цифрами года.

После преобразования ячеек с текстовыми значениями можно изменить внешний вид дат путем применения формата даты.

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

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

Нажмите кнопку числовой формат и выберите нужный формат даты.

Краткий формат даты выглядит следующим образом:

В длинный формат даты содержатся дополнительные сведения, как показано на рисунке:

Чтобы преобразовать текстовую дату в ячейку в серийный номер, используйте функцию ДАТАЗНАЧ. Затем скопируйте формулу, выделите ячейки, содержащие текстовые даты, и используйте команду Специальная Вставка , чтобы применить к ним формат даты.

Выполните указанные ниже действия:

Выберите пустую ячейку и убедитесь в том, что ее числовой формат является общим.

В пустой ячейке сделайте следующее.

Щелкните ячейку, содержащую дату в текстовом формате, которую следует преобразовать.

Нажмите клавишу ВВОД, и функция ДАТАЗНАЧ возвращает порядковый номер даты, представленной текстовым форматом даты.

Что такое серийный номер Excel?

В Excel даты хранятся в виде порядковых номеров, что позволяет использовать их в вычислениях. По умолчанию 1 января 1900 г. является порядковым числом 1, а 1 января 2008 — порядковый номер 39448, так как он составляет 39 448 дня после 1 января, 1900.To скопировать формулу преобразования в диапазон смежных ячеек, выделите ячейку, содержащую введенную формулу. , а затем перетащите маркер заполнения по диапазону пустых ячеек, который соответствует размеру диапазона ячеек, содержащих текстовые даты.

В результате получится диапазон ячеек с порядковыми номерами, который соответствует диапазону ячеек с датами в текстовом формате.

Выделите ячейку или диапазон ячеек, которые содержат серийные номера, а затем на вкладке Главная в группе буфер обмена нажмите кнопку Копировать.

Сочетание клавиш: Кроме того, можно нажать клавиши CTRL + C.

Выделите ячейку или диапазон ячеек, которые содержат даты в текстовом формате, и на вкладке Главная в группе Буфер обмена нажмите стрелку под кнопкой Вставить и выберите команду Специальная вставка.

В диалоговом окне Специальная вставка в разделе Вставить выберите параметр Значения и нажмите кнопку ОК.

На вкладке Главная нажмите кнопку вызова всплывающего окна рядом с полем число.

В поле Категория выберите пункт Дата, после чего укажите необходимый формат даты в списке Тип.

Чтобы удалить серийные номера после того, как все даты будут успешно преобразованы, выделите ячейки, содержащие их, а затем нажмите клавишу DELETE.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

 

Rommeo

Пользователь

Сообщений: 6
Регистрация: 24.05.2017

Всем привет. Очень нужна помощь в обработке массива данных.

Есть база данных обращений клиентов за услугами. Есть столбцы А — дата покупки, B — ID клиента, C — услуга

Надо высчитать:
1 — когда клиента обратился в первый раз
2 — когда клиент обращался в прошлый раз
3 — какую услугу купил клиент в прошлый раз

Заранее огромное спасибо!

Прикрепленные файлы

  • пример.xlsx (94.02 КБ)

Изменено: Rommeo08.12.2019 17:55:32

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

 

Lefevr

Пользователь

Сообщений: 119
Регистрация: 08.06.2016

Rommeo, сколько это будет стоить?)

… в этом мире не лжет, потому что не в состоянии, только одна вещь, и это — математика.

 

Rommeo

Пользователь

Сообщений: 6
Регистрация: 24.05.2017

#4

08.06.2017 14:51:45

Цитата
Юрий М написал:
Есть база, надо…

Ну как база.. таблица =)) Данный просто собрать пришлось из разных источников.

Цитата
Lefevr написал:
сколько это будет стоить?)

оО

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Rommeo, я вот о чём: Вы зашли на форум, ни «привета» от Вас нет, ни просьбы — только «есть» и «надо». А с таким подходом — Вам правильно Lefevr подсказывает — в платный раздел прямая дорога ))  

 

Rommeo

Пользователь

Сообщений: 6
Регистрация: 24.05.2017

#6

08.06.2017 15:02:21

Цитата
Юрий М написал:
Rommeo , я вот о чём: Вы зашли на форум, ни «привета» от Вас нет, ни просьбы — только «есть» и «надо». А с таким подходом — Вам правильно  Lefevr  подсказывает — в платный раздел прямая дорога ))  

Сори =) Да,  подправил пост. Как-то на работе уж очень закрутился =) и.. ВСЕМ ПРИВЕТ! =)

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#7

08.06.2017 15:06:38

Цитата
Rommeo написал:
1 — когда клиента обратился в первый раз
2 — когда клиент обращался в прошлый раз
3 — какую услугу купил клиент в прошлый раз

Если с «первым» разом всё понятно, то как понять «прошлый» раз? В названии темы звучит «предпоследний» — это понятно, а «прошлый» — это что?
===
И не нужно цитировать без необходимости.

 

Rommeo

Пользователь

Сообщений: 6
Регистрация: 24.05.2017

#8

08.06.2017 15:13:25

Цитата
Юрий М написал:
то как понять «прошлый» раз?

В этом столбце надо показать, когда клиент совершал предыдущую покупку.

К примеру клиент № 9 совершал покупку 3 раза. 01.янв, 25 янв и 30.янв.
Напротив покупку 01.01 должна дата 01.янв, напротив 25 янв. должна быть дата 01.янв, напротив 30 янв — соответственно 25.01.
и так по каждому клиенту.

Я как-то поиском все нигде не могу найти как это правильно общитать. С первым столбцом тут наверно будет через =МАКС. Но вот что дальше у меня что-то ход мыслей останавливается!

Спасибо!

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#9

08.06.2017 15:18:52

А как же быть с этим?

Цитата
Rommeo написал:
поиск предпоследней даты

По названию темы получается, что нужно найти первую и предпоследнюю даты. И всё.

 

Rommeo

Пользователь

Сообщений: 6
Регистрация: 24.05.2017

Ну если считать из примера выше — то 25.янв будет предпоследняя дата покупки относительно всех трех покупок. Если считать относительно покупки совершенной 30.янв — то это будет предыдущая покупка. Как тогда тут правильнее описать это в теме? Предпоследняя или предыдущая? Ведь обсчитывать нужно каждую покупку клиента относительно всех предыдущих дат.

Изменено: Rommeo08.06.2017 15:26:24

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#11

08.06.2017 15:35:34

Цитата
Rommeo написал:
Как тогда тут правильнее описать это в теме? Предпоследняя или предыдущая?

Представьте, что 5 покупок. Если разговор про предпоследнюю, то на выходе должно получиться всего 2 значения: первая покупка и предпоследняя. Никаких промежуточных.
Вы уж определитесь или с задачей или с названием. А то предложат Вам вариант, но Вы же потом скажете: «А мне нужно немного не так…»

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

#12

08.06.2017 15:47:01

Цитата
К примеру клиент № 9 совершал покупку 3 раза. 01.янв, 25 янв и 30.янв.

В вашем примере клиент № 9 совершал покупки 09.01.2013 , 28.02.2013 и 08.07.2013

Цитата
когда клиент обращался в прошлый раз

Какая дата имеется в виду?

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Кузьмич, если исходить из #8, то должны получиться даты:
Дата покуп.  Предыдущ.
09.01.2013 — 09.01.2013
28.02.2013 — 09.01.2013
08.07.2013 — 28.02.2013

 

jakim

Пользователь

Сообщений: 1947
Регистрация: 01.03.2013

Если есть возможность, воспользуйтесь функцией АГРЕГАТ.

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

Для клиента №9 три покупки
Первая        Предыдущая
09.01.2013   28.02.2013
28.02.2013   08.07.2013  
08.07.2013   нет предыдущей, д.б. пусто
я правильно понимаю?

 

АlехМ

Пользователь

Сообщений: 1100
Регистрация: 02.05.2017

Первая покупка формула массива
=МИН(ЕСЛИ(C$4:C4=C4;B$4:B4))
Дата предыдущей покупки и предыдущая услуга
=ЕСЛИ(СЧЁТЕСЛИ(C$4:C4;C4)=1;»-«;ПРОСМОТР(2;1/(C$3:C3=C4);B$3:B3))
=ЕСЛИ(СЧЁТЕСЛИ(C$4:C4;C4)=1;»-«;ПРОСМОТР(2;1/(C$3:C3=C4);D$3:D3))

В столбце счетчик покупок каждого клиента. Если первая, то предыдущей нет «-«, если покупка вторая, то предыдущая покупка равна первой.
Поэтому с третьей покупки даты первой и предпоследней разные.
Файл 290 кб, в сжатом 200 кб. В сообщение не вставляется.
Поэтому покажу формулу счетчика
=СЧЁТЕСЛИ(C$4:C4;C4)

 

Rommeo

Пользователь

Сообщений: 6
Регистрация: 24.05.2017

Кнопка цитирования не для ответа [МОДЕРАТОР]

УИИИ!!! Все работает!! Огромное СПАСИБО!!!

 

colonel

Пользователь

Сообщений: 45
Регистрация: 13.03.2016

Приветствую всех!

Дабы не плодить тем, напишу здесь, поскольку мой кейс очень сильно похож с предыдущим и имеет, видимо, похожее решение.

1) Есть массив данных: имена мастеров и даты проведения ими осмотров оборудования. Даты не разбросаны хаотично, а отсортированы по возрастанию. От предыдущей задачи отличие в том, что мне не нужно определять даты предыдущего осмотра для каждого из осмотров в таблице. Для каждого из мастеров нужно найти:

а) дату последнего осмотра до заданной даты
б) дату предпоследнего осмотра до заданной даты

Пожалуйста, подскажите решение или в каком направлении двигаться.

2) Здесь же озвучу другой вопрос, связанный с этими мастерами. График их визитов ведется в Google Docs. Через Power Query я вытягиваю даты и в Excel они все оказываются на 1462 дня больше (на 5 лет). Даты идут в нормальном порядке, по возрастанию, но все увеличены. В Google Docs отображаются корректно. Есть ли идеи за счет чего это может происходить?

Изменено: colonel08.12.2019 16:58:27

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

Два варианта во вложении.

По вопросам из тем форума, личку не читаю.

 

colonel

Пользователь

Сообщений: 45
Регистрация: 13.03.2016

БМВ, благодарю за быстрый ответ. Кажется, Ваше решение не учитывает ячейку Е1. Где нужно указывать дату относительно которой ищется последний и предпоследний осмотр.

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

colonel, если кажется, то надо проверить.

По вопросам из тем форума, личку не читаю.

 

colonel

Пользователь

Сообщений: 45
Регистрация: 13.03.2016

БМВ, прошу извинить) My fault. Я завтыкал, что у меня везде 2015 год, а в Е1 я на автомате вносил даты 2019 года.

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

 

БМВ

Модератор

Сообщений: 21385
Регистрация: 28.12.2016

Excel 2013, 2016

#23

08.12.2019 17:44:09

Цитата
colonel написал:
Не взглянете ли еще на вторую часть вопроса? Я подредактировал свой начальный пост.

Поросите Николая отредактировать правила и тогда …..  :D

По вопросам из тем форума, личку не читаю.

 

colonel

Пользователь

Сообщений: 45
Регистрация: 13.03.2016

#24

08.12.2019 17:54:41

БМВ, сейчас пороюсь в поиске и создам новую, если ничего не найду. Большое спасибо за помощь.

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