Как найти ближайшую дату в excel


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

Поиск ЧИСЛА ближайшего к заданному

.

Пусть в диапазоне

A4:A12

имеется список дат. Будем в нем искать дату из ячейки

С4

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

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

Файл примера

):


Решение


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


Примечание

=

ВПР(C4;A4:A12;1;ИСТИНА)

=

ПРОСМОТР(C4;A4:A12;A4:A12)

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

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

=

ИНДЕКС(A4:A12; ПОИСКПОЗ(МИН(ABS(A4:A12-C4));ABS(A4:A12-C4);0))

ищется

ближайшая

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

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

=

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

ищется

наибольшее значение, которое меньше

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

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

=

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

ищется

наименьшее значение, которое больше

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

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

=

МАКС(ЕСЛИ(МИН(ABS(A4:A12-C4))=ABS(A4:A12-C4);A4:A12;МИН(A4:A12)))

ищется

ближайшая

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

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

=

МИН(ЕСЛИ(МИН(ABS(A4:A12-C4))=ABS(A4:A12-C4);A4:A12;МАКС(A4:A12)))

ищется

ближайшая

к критерию дата (если обнаружено 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 хранит дату и время

), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел

Ближайшее ЧИСЛО

).

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

Поиск ближайшей к сегодняшней дате даты в Excel
Поиск ближайшей даты к сегодняшнему дню в Excel


Поиск ближайшей к сегодняшней дате даты в Excel

Как показано на скриншоте ниже, сегодняшняя дата – 1 января 29 года, пожалуйста, сделайте следующее, чтобы найти прошлое, ближайшее к сегодняшней дате.

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

2. Скопируйте и вставьте формулу. = МАКС (($ A $ 2: $ A $ 18 в Панель формул, а затем нажмите Ctrl + Shift + Enter ключи одновременно.

Как показано на приведенном выше снимке экрана, вы можете видеть, что последняя дата, ближайшая к сегодняшней дате 1, заполнена в ячейке B26.


Поиск ближайшей даты к сегодняшнему дню в Excel

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

1. Выберите пустую ячейку B2, скопируйте и вставьте формулу. = МИН (ЕСЛИ (A2: A18> СЕГОДНЯ (); A2: A18)) в Панель формул, а затем нажмите Ctrl + Shift + Enter клавиши одновременно. Смотрите скриншот:

Тогда вы получите ближайшую к сегодняшнему дню дату в будущем в ячейке B2.

Заметки:

1. В формулах измените диапазон по своему усмотрению;

2. Если формат даты не отображается, измените формат ячейки на «Дата» после расчета.


Статьи по теме:

  • Как найти первую или последнюю пятницу каждого месяца в Excel?
  • Как найти 5 наименьших и наибольших XNUMX значений в списке в Excel?
  • Как найти или проверить, открыта ли конкретная книга в Excel?
  • Как узнать, есть ли ссылка на ячейку в другой ячейке Excel?
  • Как найти позицию первого / последнего числа в текстовой строке в Excel?

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

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

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

вкладка kte 201905


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

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

офисный дно

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


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

Содержание

  1. Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в EXCEL. Несортированный список
  2. Задача
  3. Решение
  4. Поиск в EXCEL ДАТЫ ближайшей к заданной
  5. Excel как найти ближайшую дату
  6. Как найти ближайшую к сегодняшнему дню дату в списке в Excel?
  7. Excel как найти ближайшую дату

Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в EXCEL. Несортированный список

history 22 марта 2015 г.

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

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

Задача

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

Решение

Задача решается в 2 этапа (см. файл примера ):

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

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

Ближайшую дату найдем с помощью формулы массива :

Текущую цену найдем с помощью еще одной формулы массива:

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

Данные в таблице могут быть не отсортированы.

Источник

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

history 7 апреля 2013 г.

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

Пусть в диапазоне 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 хранит дату и время ), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел Ближайшее ЧИСЛО ).

Источник

Excel как найти ближайшую дату

Как найти ближайшую к сегодняшнему дню дату в списке в Excel?

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

Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!

Как показано на скриншоте ниже, сегодняшняя дата — 1 января 29 года, пожалуйста, сделайте следующее, чтобы найти прошлое, ближайшее к сегодняшней дате.

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

2. Скопируйте и вставьте формулу. = МАКС (($ A $ 2: $ A $ 18 в Панель формул, а затем нажмите Ctrl + Shift + Enter ключи одновременно.

Как показано на приведенном выше снимке экрана, вы можете видеть, что последняя дата, ближайшая к сегодняшней дате 1, заполнена в ячейке B26.

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

1. Выберите пустую ячейку B2, скопируйте и вставьте формулу. = МИН (ЕСЛИ (A2: A18> СЕГОДНЯ (); A2: A18)) в Панель формул, а затем нажмите Ctrl + Shift + Enter клавиши одновременно. Смотрите скриншот:

Тогда вы получите ближайшую к сегодняшнему дню дату в будущем в ячейке B2.

Заметки:

1. В формулах измените диапазон по своему усмотрению;

2. Если формат даты не отображается, измените формат ячейки на «Дата» после расчета.

Источник

Excel как найти ближайшую дату

Pelena, Ваша формула (массива)

Pelena, Ваша формула (массива)

Pelena, Ваша формула (массива)

buchlotnik Дата: Среда, 29.04.2015, 04:39 | Сообщение № 16
dickist Дата: Среда, 29.04.2015, 15:00 | Сообщение № 17
Pelena Дата: Среда, 29.04.2015, 15:09 | Сообщение № 18
«Черт возьми, Холмс! Но как. »
Ю-money 41001765434816

Ответить

dickist Дата: Среда, 29.04.2015, 18:17 | Сообщение № 19

, (ячейки F5 и C5 входят в диапазон, но значения в них постоянны), то это никак не влияет на результат.
Также не повлияет на результат, если мы введем в ячейку D5 (накладная) значение больше СЕГОДНЯ [ЕСЛИ((C5:Q5>=СЕГОДНЯ())], например, 42124, что соответствует 2015.04.30 (а сегодня 04.29), т.к. D5 не относится к «дата».
Но стоит ввести в формулу в ячейке (Е5 или D5) ссылку на В5 — Кранты!

То есть, Excel сравнивает с условием ячейки из колонок, имеющих заголовок «дата» в диапазоне C5:Q5 и выводит из них минимальную, но физически проверяет все ячейки диапазона, и не допускает в них ссылку на результат расчетов.
Я правильно понял?
Если что-то не так, поправьте, пожалуйста.

p.s. У меня есть конкретная задача, и в ее решении возникли проблемы, по-моему, они не касаются зацикливания.
Ее можно также назвать «Поиск ближайшей даты к сегодняшнему дню», разве, что добавить «с дополнительным условием».
Стоит ее выносить в отдельную тему, или можно обсудить здесь?

, (ячейки F5 и C5 входят в диапазон, но значения в них постоянны), то это никак не влияет на результат.
Также не повлияет на результат, если мы введем в ячейку D5 (накладная) значение больше СЕГОДНЯ [ЕСЛИ((C5:Q5>=СЕГОДНЯ())], например, 42124, что соответствует 2015.04.30 (а сегодня 04.29), т.к. D5 не относится к «дата».
Но стоит ввести в формулу в ячейке (Е5 или D5) ссылку на В5 — Кранты!

То есть, Excel сравнивает с условием ячейки из колонок, имеющих заголовок «дата» в диапазоне C5:Q5 и выводит из них минимальную, но физически проверяет все ячейки диапазона, и не допускает в них ссылку на результат расчетов.
Я правильно понял?
Если что-то не так, поправьте, пожалуйста.

p.s. У меня есть конкретная задача, и в ее решении возникли проблемы, по-моему, они не касаются зацикливания.
Ее можно также назвать «Поиск ближайшей даты к сегодняшнему дню», разве, что добавить «с дополнительным условием».
Стоит ее выносить в отдельную тему, или можно обсудить здесь? dickist

, (ячейки F5 и C5 входят в диапазон, но значения в них постоянны), то это никак не влияет на результат.
Также не повлияет на результат, если мы введем в ячейку D5 (накладная) значение больше СЕГОДНЯ [ЕСЛИ((C5:Q5>=СЕГОДНЯ())], например, 42124, что соответствует 2015.04.30 (а сегодня 04.29), т.к. D5 не относится к «дата».
Но стоит ввести в формулу в ячейке (Е5 или D5) ссылку на В5 — Кранты!

То есть, Excel сравнивает с условием ячейки из колонок, имеющих заголовок «дата» в диапазоне C5:Q5 и выводит из них минимальную, но физически проверяет все ячейки диапазона, и не допускает в них ссылку на результат расчетов.
Я правильно понял?
Если что-то не так, поправьте, пожалуйста.

Источник

Adblock
detector

New to advanced excel concepts, I have a list of numbers such as:

101 02/22/2016  
100 02/21/2016

and then another list like so:

101 01/01/2016 Apple
101 02/20/2016 Banana
100 02/21/2016 Apple
100 02/23/2016 Banana

I’m trying to get it where I use a vlookup with the number on the more basic table, check for a match on the advanced table then find the date on the advanced table that is closest to the date on the basic table, then return the value to the right (Banana, Apple).

I’ve got the vlookup part down, but placing an if statement just returns N/A and breaks every time.

I’ve also tried using this guide: http://eimagine.com/say-goodbye-to-vlookup-and-hello-to-index-match/

Scott Craner's user avatar

Scott Craner

147k9 gold badges48 silver badges80 bronze badges

asked Sep 28, 2016 at 19:05

Nathanial Wcislak's user avatar

2

You can use this array formula:

=INDEX($C$1:$C$4,MATCH(MIN(IF($A$1:$A$4=E1,ABS($B$1:$B$4-F1))),IF($A$1:$A$4=E1,ABS($B$1:$B$4-F1)),0))

Being an array formula it needs to be confirmed with Ctrl-Shift-Enter instead of Enter when exiting edit mode. If done correctly then Excel will put {} around the formula.

enter image description here

answered Sep 28, 2016 at 19:47

Scott Craner's user avatar

Scott CranerScott Craner

147k9 gold badges48 silver badges80 bronze badges

1

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

В этой статье

  • Общие сведения

  • Подготовка примера данных к примеру

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

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

Общие сведения

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

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

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

  • Кто в последнее время делает самые популярные продажи?

  • Когда клиент делал заказ в последний раз?

  • Когда в команде будут следующие три дня рождения?

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

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

Использование фильтра вместо запроса на использование верхних значений

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

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

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

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

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

Подготовка примера данных к примеру

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

Таблица “Сотрудники”   

Фамилия

Имя

Адрес

Город

CountryOrR
egion

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

Дата
найма

Авдеев

Григорий

Загородное шоссе, д. 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

Таблица EventType    

КодТипа

Тип
события

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.

4/14/2011

10 000 ₽

2

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

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

4/21/2011

8000 ₽

3

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

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

01.05.2011

25000 ₽

4

Выставка

НИИ железа

5/13/2011

4 500 ₽

5

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

Contoso, Ltd.

5/14/2011

55 000 ₽

6

Концерт

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

5/23/2011

12 000 ₽

7

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

А. Datum

6/1/2011

15 000 ₽

8

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

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

6/18/2011

21 000 ₽

9

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

Adventure Works

6/22/2011

1300 ₽

10

Лекция

НИИ железа

6/25/2011

2450 ₽

11

Лекция

Contoso, Ltd.

04.07.2011

3800 ₽

12

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

НИИ железа

04.07.2011

5500 ₽

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

В этом примере данные в листах Excel

  1. Запустите Excel. Откроется пустая книга.

  2. Нажмите shift+F11, чтобы вставить в таблицу таблицу (потребуется четыре).

  3. Скопируйте данные из каждого примера таблицы на пустой таблицу. Включить заголовки столбцов (первую строку).

Создание таблиц базы данных на основе листов

  1. Выберем данные с первого таблицы, включая заголовки столбцов.

  2. Щелкните правой кнопкой мыши в области навигации и выберите “Вировать”.

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

  4. Повторите действия 1–3 для каждого из оставшихся на каждом из них.

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

В этом разделе показано, как создать запрос на набор значений.

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

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

  2. Дважды щелкните таблицу “Сотрудники” и нажмите кнопку “Закрыть”.

    Если используется пример данных, добавьте в запрос таблицу “Сотрудники”.

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

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

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

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

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

  5. На вкладке Конструктор в группе Сервис щелкните стрелку вниз рядом со значением Все (список Набор значений) и либо введите число записей, которые вы хотите просмотреть, либо выберите значение из списка.

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

  7. Сохраните запрос в качестве NextBirthDays.

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

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

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

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

  1. В области навигации щелкните правой кнопкой мыши запрос NextBirthDays и выберите “Конструктор”.

  2. В конструкторе запросов в столбце справа от Столбец “ДатаРождения” введите следующую дату:
    MonthPart(“m”;[ДатаРождения]).
    Это выражение извлекает месяц из BirthDate с помощью функции DatePart.

  3. В следующем столбце конструктора запросов введите следующую
    информацию: DayOfMonthPart(“d”;[ДатаРождения])Это выражение извлекает день месяца из столбца BirthDate с помощью функции
    DatePart.

  4. В строке “Показать” откажитесь от флажков для каждого из двух только что в введеныных выражений.

  5. Щелкните строку “Сортировка” для каждого выражения и выберите “По возрастанию”.

  6. В строке “Условия” столбца “Дата рождения” введите следующее выражение:
    Month([Дата рождения]) > Month(Date()) OR Month([Дата рождения])= Month(Date()) AND Day([Дата рождения])>Day(Date())Это выражение делает
    следующее:

    • Month(
      [Дата рождения]) > Month(Date()) указывает, что дата рождения каждого сотрудника приходится на будущий месяц.

    • Month( [Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date()) указывает, что если дата рождения приходится на текущий месяц, день рождения приходится на текущий день или после текущего дня.

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

  7. На вкладке “Конструктор” в группе “Настройка запроса” введите “3” в поле “Возврат”.

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

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

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

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

С помощью итогного запроса можно найти самые ранние или последние даты для записей, которые попадают в группы, например событий, сгруппных по городу. Итоговой запрос — это запрос на выборки, в который для вычисления значений каждого выходного поля используются агрегатные функции (например, “Группировка”, “M”и “Максимум”, “Количество”, “Первое” и “Последнее”).

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

Совет:  Построение запросов — очень эффективная стратегия для ответа на более сложные вопросы. Если у вас возникли проблемы с выполнением сложного запроса, подумайте, можно ли разбить его на по несложные запросы.

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

В этой процедуре для ответа на этот вопрос используются примеры таблиц Events и EventType.

Когда событие было последним в каждом из типов событий, кроме концертов?

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

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

  3. Дважды щелкните поле EventType таблицы EventType и поле EventDate из таблицы Events, чтобы добавить поля в таблицу конструктора запросов.

  4. В сетке конструктора запросов в строке “Условия” поля EventType введите<>“Концерт”.

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

  6. В сетке конструктора запросов щелкните строку “Итог” в поле “EventDate” и выберите “Максимум”.

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

  8. В окне SQL, в конце предложения SELECT, сразу после ключевого слова AS, замените MaxOfEventDate на MostRecent.

  9. Сохраните запрос mostRecentEventByType.

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

В этой процедуре для ответа на этот вопрос используется запрос MostRecentEventByType из предыдущей процедуры:

Кто был клиентом на последних событиях каждого типа события?

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

  2. На вкладке “Запросы” дважды щелкните запрос MostRecentEventByType.

  3. На вкладке “Таблицы” дважды щелкните таблицы “Мероприятия” и “Клиенты”.

  4. В конструкторе запросов дважды щелкните следующие поля:

    1. В таблице Events дважды щелкните EventType.

    2. В запросе MostRecentEventByType дважды щелкните mostRecent.

    3. В таблице “Клиенты” дважды щелкните “Компания”.

  5. В сетке конструктора запросов в строке “Сортировка” столбца EventType выберите “По возрастанию”.

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

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

Добавить комментарий