Содержание
- Поиск ближайшего события в EXCEL
- Задача
- Решение
- Последнее прошедшее событие
- Функции для работы с датами в Excel: примеры использования
- Как Excel обрабатывает время
- Пример функции ДАТА
- Функция РАЗНДАТ в Excel
- Функция ГОД в Excel
- Функция МЕСЯЦ в Excel: пример
- Примеры функций ДЕНЬ, ДЕНЬНЕД и НОМНЕДЕЛИ в Excel
- Поиск в EXCEL ДАТЫ ближайшей к заданной
- Глава 12. Выборка из диапазона дат с помощью критерия в ином формате
Поиск ближайшего события в EXCEL
history 13 апреля 2013 г.
Пусть имеется список неких событий, например, праздников. Найдем ближайшее событие, которое еще не произошло.
В диапазоне A7:B15 имеется список праздников (или расписание каких-либо событий).
Задача
Определим ближайшее событие, которое еще не произошло. Текущую дату разместим в ячейке D7 .
Решение
=ЕСЛИОШИБКА( ИНДЕКС(B7:B17;ПОИСКПОЗ(МИН(ЕСЛИ(A7:A17>=D7;A7:A17;»»));A7:A17;0);1) ;»Событий нет»)
Для пошагового просмотра хода вычислений формулы можно воспользоваться клавишей F9 .
Если дата-критерий (ячейка D7 ) позднее, чем самая последняя дата в списке, то формула выведет строку «Событий нет».
Для работы формулы сортировка списка по дате не требуется, но она потребуется для правила Условного форматирования , которое будет выделять результат формулы массива .
Последнее прошедшее событие
Для того, чтобы найти последнее прошедшее событие можно воспользоваться функцией ВПР() :
Для функции ВПР() требуется сортировка списка дат по возрастанию.
Источник
Функции для работы с датами в Excel: примеры использования
Для работы с датами в Excel в разделе с функциями определена категория «Дата и время». Рассмотрим наиболее распространенные функции в этой категории.
Как Excel обрабатывает время
Программа Excel «воспринимает» дату и время как обычное число. Электронная таблица преобразует подобные данные, приравнивая сутки к единице. В результате значение времени представляет собой долю от единицы. К примеру, 12.00 – это 0,5.
Значение даты электронная таблица преобразует в число, равное количеству дней от 1 января 1900 года (так решили разработчики) до заданной даты. Например, при преобразовании даты 13.04.1987 получается число 31880. То есть от 1.01.1900 прошло 31 880 дней.
Этот принцип лежит в основе расчетов временных данных. Чтобы найти количество дней между двумя датами, достаточно от более позднего временного периода отнять более ранний.
Пример функции ДАТА
Построение значение даты, составляя его из отдельных элементов-чисел.
Синтаксис: год; месяц, день.
Все аргументы обязательные. Их можно задать числами или ссылками на ячейки с соответствующими числовыми данными: для года – от 1900 до 9999; для месяца – от 1 до 12; для дня – от 1 до 31.
Если для аргумента «День» задать большее число (чем количество дней в указанном месяце), то лишние дни перейдут на следующий месяц. Например, указав для декабря 32 дня, получим в результате 1 января.
Пример использования функции:
Зададим большее количество дней для июня:
Примеры использования в качестве аргументов ссылок на ячейки:
Функция РАЗНДАТ в Excel
Возвращает разницу между двумя датами.
- начальная дата;
- конечная дата;
- код, обозначающий единицы подсчета (дни, месяцы, годы и др.).
Способы измерения интервалов между заданными датами:
- для отображения результата в днях – «d»;
- в месяцах – «m»;
- в годах – «y»;
- в месяцах без учета лет – «ym»;
- в днях без учета месяцев и лет – «md»;
- в днях без учета лет – «yd».
В некоторых версиях Excel при использовании последних двух аргументов («md», «yd») функция может выдать ошибочное значение. Лучше применять альтернативные формулы.
Примеры действия функции РАЗНДАТ:
В версии Excel 2007 данной функции нет в справочнике, но она работает. Хотя результаты лучше проверять, т.к. возможны огрехи.
Функция ГОД в Excel
Возвращает год как целое число (от 1900 до 9999), который соответствует заданной дате. В структуре функции только один аргумент – дата в числовом формате. Аргумент должен быть введен посредством функции ДАТА или представлять результат вычисления других формул.
Пример использования функции ГОД:
Функция МЕСЯЦ в Excel: пример
Возвращает месяц как целое число (от 1 до 12) для заданной в числовом формате даты. Аргумент – дата месяца, который необходимо отобразить, в числовом формате. Даты в текстовом формате функция обрабатывает неправильно.
Примеры использования функции МЕСЯЦ:
Примеры функций ДЕНЬ, ДЕНЬНЕД и НОМНЕДЕЛИ в Excel
Возвращает день как целое число (от 1 до 31) для заданной в числовом формате даты. Аргумент – дата дня, который нужно найти, в числовом формате.
Чтобы вернуть порядковый номер дня недели для указанной даты, можно применить функцию ДЕНЬНЕД:
По умолчанию функция считает воскресенье первым днем недели.
Для отображения порядкового номера недели для указанной даты применяется функция НОМНЕДЕЛИ:
Дата 24.05.2015 приходится на 22 неделю в году. Неделя начинается с воскресенья (по умолчанию).
В качестве второго аргумента указана цифра 2. Поэтому формула считает, что неделя начинается с понедельника (второй день недели).
Для указания текущей даты используется функция СЕГОДНЯ (не имеет аргументов). Чтобы отобразить текущее время и дату, применяется функция ТДАТА ().
Источник
Поиск в 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 хранит дату и время ), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел Ближайшее ЧИСЛО ).
Источник
Глава 12. Выборка из диапазона дат с помощью критерия в ином формате
Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel.
При создании формул массива, операторы массива могут значительно увеличить время расчета. В этой короткой главе рассматриваются два примера, в которых обычная формула справляется с задачей значительно быстрее формулы массива.
Подсчет дат, когда критерий сформулирован в виде текста. На рис. 12.1 показан набор данных с датами в стандартном формате Excel, то есть в виде порядковых чисел. В тоже время, критерии заданы как число (год) и текст (месяц). Цель – подсчитать, сколько дат соответствуют критерию. Проблема в том, что у нас несоответствие формата данных: в столбце A даты как порядковые номера, а критерий – смесь чисел и текста. На рис. 12.1 приведено пять различных формул, которые можно использовать для достижения цели.
Рис. 12.1. Подсчет количества дат (заданных порядковыми номерами) по двум критериям: году (число) и месяцу (текст)
Скачать заметку в формате Word или pdf, примеры в формате Excel2013
Давайте подробнее изучим работу этих пяти формул.
- Если вы можете позволить себе вспомогательный столбец, функция СЧЁТЕСЛИ будет самым простым решением.
- Функция МЕСЯЦ возвращает число между 1 и 12, а функция ГОД – число (год).
- Хотя Excel требует, чтобы аргумент функции МЕСЯЦ был представлен датой в числовом формате, этот аргумент может распознать и текст. Однако МЕСЯЦ(Окт) вернет ощибку, а вот если добавить к названию месяца любое число, например, 1, то Excel справится. Используйте, как в формуле выражение Окт1, заданное фрагментом F8&1, или 1Окт, заданное фрагментом 1&F8.
- Формулы с вспомогательными столбцами как правило работают быстрее.
- Если у вас Excel 2007 или более поздний, вы можете использовать функции СЧЁТЕСЛИМН и КОНМЕСЯЦА.
- Вам даны год (в виде числа) и месяц (как текст). Это означает, что вы можете вычислить дату начала и конца месяца, а затем определить даты, попажающие между ними.
- Месяц всегда начинается с первого числа, так что вы можете создать нижнюю границу диапазона конкатенацией: » >=1 » &F8&E8. Операции конкатенации возвращают текст, но это не страшно, т.к. функция СУММЕСЛИМН понимает даты в виде текста.
- Вы используете функцию КОНМЕСЯЦА с аргументом число_месяцев равным нулю; это позволяет получить последнюю дату текущего месяца. Функция КОНМЕСЯЦА является динамической: она возвращает 28 или 29 для февраля и 30 или 31 для любого другого месяца.
- Эта формула является самой быстрой, если вам нужно получить решение в одной ячейке.
- Если у вас Excel версии младше 2007 г., вы можете использовать две функции СЧЁТЕСЛИ, одну – для верхнего диапазона, вторую – для нижнего. Фокус в том, чтобы сначала сосчитать все значения, которые равны или меньше верхней границы, а затем вычесть все значения, которые меньше нижней границы.
- В Excel 2003 или более ранней, чтобы добавить функцию КОНМЕСЯЦА, вам нужно выбрать Инструменты → Надстройки → Анализ Данных.
- Эта формула работает быстрее, чем формулы [4] и [5].
- Функции МЕСЯЦ и ГОД возвращают числа, извлекая их из порядкового номера даты.
- Далее сравниваются два фрагмента, каждый полкченный конкатенацией.
- Функция ТЕКСТ используется для представления чисел в виде текста. Второй аргумент этой функции – формат – определяет, как будет представлено число. Вы может конвертировать весь столбец А в текст, состоящий из 7 символов: 3 буквы месяца и 4 цифры года.
Нахождение объема продаж за год. На рис. 12.4 показан пример несоответствие формата года в критерии Е6 (число) и формата дат в диапазоне А2:А6 (порядковый номер). Цель – найти сумму продаж за год. На рисунке представлены шесть вариантов формул, которые могут решить задачу. Обратите внимание, что в формулах [1] и [2] критерии начала и конца года жестко зашиты в коде, т.к. они не могут изменяться. Это 1/1 и 31/12). Формулы размещены на рисунке в порядка увеличения скорости работы.
Рис. 12.4. Формата года в критерии Е6 (число) не соответствует формату дат в диапазоне А2:А6 (порядковый номер)
Источник
Пусть имеется список неких событий, например, праздников. Найдем ближайшее событие, которое еще не произошло.
В диапазоне
A7:B15
имеется список праздников (или расписание каких-либо событий).
Задача
Определим ближайшее событие, которое еще не произошло. Текущую дату разместим в ячейке
D7
.
Решение
Решением является
формула массива
из статьи
Поиск ДАТЫ ближайшей к заданной
:
=ЕСЛИОШИБКА( ИНДЕКС(B7:B17;ПОИСКПОЗ(МИН(ЕСЛИ(A7:A17>=D7;A7:A17;»»));A7:A17;0);1) ;»Событий нет»)
Для пошагового просмотра хода вычислений формулы можно воспользоваться
клавишей
F9
.
Если дата-критерий (ячейка
D7
) позднее, чем самая последняя дата в списке, то формула выведет строку «Событий нет».
Для работы формулы
сортировка
списка по дате не требуется, но она потребуется для правила
Условного форматирования
, которое будет выделять результат
формулы массива
.
Последнее прошедшее событие
Для того, чтобы найти последнее прошедшее событие можно воспользоваться функцией
ВПР()
:
=ВПР(D7;A7:B17;2;ИСТИНА)
Для функции
ВПР()
требуется сортировка списка дат по возрастанию.
Одним из распространенных способов использования Excel является создание списков событий, встреч и других мероприятий, связанных с календарем. В то время как Excel способен с легкостью обрабатывать эти данные, он не имеет быстрого способа визуализировать эту информацию. Нам потребуется немного творчества, условного форматирования, несколько формул и 3 строки кода VBA, чтобы создать симпатичный, интерактивный календарь. Рассмотрим, как можем все это реализовать.
Я нашел этот пример на сайте Chandoo.org и делюсь им с вами.
Интерактивный календарь в Excel
На выходе у нас должно получиться что-то вроде этого:
Создаем таблицу с событиями
На листе Расчеты создаем таблицу со всеми событиями
Настраиваем календарь
Так как все события происходят в рамках двух месяцев, я просто ввел первую дату первого месяца, протянул вниз и отформатировал так, чтобы было похоже на календарь. На данном этапе он должен выглядеть следующим образом.
Задаем имя диапазону дат в календаре
Это просто, выделяем весь диапазон дат нашего календаря и в поле Имя задаем «Календарь»
Определяем ячейку с выделенной датой
На листе Расчеты выбираем пустую ячейку и задаем ей имя «ВыделеннаяЯчейка». Мы будем использовать ее для определения даты, которую выбрал пользователь. В нашем случае, это ячейка G3.
Добавляем макрос на событие Worksheet_selectionchange()
Описанный ниже код поможет идентифицировать, когда пользователь выбрал ячейку в диапазоне “Календарь”. Добавьте этот код на лист с календарем. Для этого открываем редактор VBA, нажатием Alt+F11. Копируем код ниже и вставляем его Лист1.
1 |
Private Sub Worksheet_SelectionChange(ByVal Target As Range) |
Настраиваем формулы для отображения деталей при выборе даты
Изменение даты на календаре ведет за собой изменение 4-х параметров отображения в анонсе: название, дата, место и описание. Зная, что дата находится в ячейке «ВыделеннаяЯчейка», воспользуемся формулами ВПР, ЕСЛИ и ЕСЛИОШИБКА для определения этих параметров. Логика формул следующая: если на выбранную дату существует событие, возвращает данные этого события, иначе возвращает пустую ячейку. Формулы с определением параметров события находятся на листе Расчеты, в ячейках G10:G13.
Добавление анонса
Наконец добавляем в лист Календарь 4 элемента Надпись и привязываем их к данным, находящихся в ячейках G10:G13 листа Расчеты.
Совет: для того, чтобы привязать значение ячейки к элементу Надпись, просто выделите элемент, в строке формул наберите G10 и щелкните Enter.
Настраиваем условное форматирование для выделенной даты
Наконец, добавьте условное форматирование, чтобы выделить даты с событиями в календаре.
Выберите диапазон дат в календаре
Переходим на вкладке Главная в группу Стили –> Условное форматирование –> Создать правило
В диалоговом окне Создание правила форматирования, выберите тип правила Использовать формулу для определения форматируемых ячеек.
Задаем правила выделения как на рисунке
Форматируем
Подчищаем рабочий лист, форматируем наш календарь и получаем классную визуализацию.
Пример рабочей книги с интерактивным календарем.
В этой статье объясняется, как использовать запросы на набор значений и итоги для поиска самых последних или самых ранних дат в наборе записей. Это поможет вам ответить на различные деловые вопросы, например о том, когда клиент в последний раз разместил заказ или какие пять кварталов были лучшими для продаж по городам.
В этой статье
-
Общие сведения
-
Подготовка примера данных к примеру
-
Поиск самой последней даты
-
Поиск наиболее или наименее последних дат для групп записей
Общие сведения
С помощью запроса на набор значений можно ранжировали данные и проверяли элементы с наивысшим рангом. Запрос на поиск значений — это запрос на выборку, который возвращает указанное число или процент значений из верхней части результатов, например пять самых популярных страниц на веб-сайте. Запрос на использование значений можно использовать для любого типа значений— они не должны быть числами.
Если вы хотите сгруппировать или обобщить данные перед тем, как ранжировать их, не нужно использовать запрос на набор значений. Предположим, что нужно найти объем продаж за указанную дату для каждого города, в котором работает компания. В этом случае города становятся категориями (необходимо собрать данные по городам), поэтому можно использовать итоговый запрос.
При использовании запроса на поиск записей, содержащих самые последние или самые ранние даты, в таблице или группе записей можно ответить на различные деловые вопросы, например следующие:
-
Кто в последнее время делает самые популярные продажи?
-
Когда клиент делал заказ в последний раз?
-
Когда в команде будут следующие три дня рождения?
Чтобы создать запрос на выборки, начните с создания запроса на выборки. Затем отсортировать данные в зависимости от того, ищете ли вы верхнюю или нижнюю часть. Если вам нужно сгруппировать или обобщить данные, превратите запрос на выборку в итоговом запросе. Затем можно воспользоваться агрегатной функцией, например Max или Min, чтобы получить максимальное или наименьшее значение, или First илиLast для возвращения самой ранней или последней даты.
В этой статье предполагается, что значения дат, которые вы используете, имеют тип данных «Дата/время». Если значения даты находятся в текстовом поле,
Использование фильтра вместо запроса на использование верхних значений
Фильтр обычно лучше, если у вас есть определенная дата. Чтобы определить, стоит ли создавать запрос на набор значений или же следует применить фильтр, примите во внимание следующее:
-
Если вы хотите вернуть все записи, в которых дата совпадает, предстояла или позже определенной даты, используйте фильтр. Например, для просмотра дат продаж между апрелем и июлем нужно применить фильтр.
-
Если вы хотите вернуть указанное количество записей, которые имеют самые последние или последние даты в поле, но точные значения дат не известны или не имеют значения, вы можете создать запрос на значения. Например, чтобы увидеть пять лучших кварталов продаж, используйте запрос на значения.
Дополнительные сведения о создании и использовании фильтров см. в статье «Применение фильтра для просмотра отдельных записей в базе данных Access».
К началу страницы
Подготовка примера данных к примеру
В действиях, следующих в этой статье, используются данные из следующих примеров таблиц.
Таблица «Сотрудники»
Фамилия |
Имя |
Адрес |
Город |
CountryOrR |
Дата |
Дата |
Авдеев |
Григорий |
Загородное шоссе, д. 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
-
Запустите Excel. Откроется пустая книга.
-
Нажмите shift+F11, чтобы вставить в таблицу таблицу (потребуется четыре).
-
Скопируйте данные из каждого примера таблицы на пустой таблицу. Включить заголовки столбцов (первую строку).
Создание таблиц базы данных на основе листов
-
Выберем данные с первого таблицы, включая заголовки столбцов.
-
Щелкните правой кнопкой мыши в области навигации и выберите «Вировать».
-
Нажмите кнопку «Да», чтобы подтвердить, что первая строка содержит заголовки столбцов.
-
Повторите действия 1–3 для каждого из оставшихся на каждом из них.
Поиск самой последней даты
В этом разделе показано, как создать запрос на набор значений.
Создание простого запроса на набор значений
-
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
-
Дважды щелкните таблицу «Сотрудники» и нажмите кнопку «Закрыть».
Если используется пример данных, добавьте в запрос таблицу «Сотрудники».
-
Добавьте на бланк поля, которые вы хотите использовать в запросе. Вы можете дважды щелкнуть каждое поле или перетащить его в пустую ячейку в строке Поле.
Если вы работаете с примером таблицы, то добавьте поля «Фамилия», «Имя» и «Дата рождения».
-
В поле, которое содержит искомые наибольшие или наименьшие значения (при использовании примера таблицы — поле «Дата рождения), в строке Сортировка выберите порядок сортировки По возрастанию или По убыванию.
При сортировке по убыванию будут возвращены самые последние даты, при сортировке по возрастанию — самые давние.
Важно: В строке Сортировка следует установить значение только для полей, содержащих даты. Если порядок сортировки задан по другому полю, запрос не вернет ожидаемых результатов.
-
На вкладке Конструктор в группе Сервис щелкните стрелку вниз рядом со значением Все (список Набор значений) и либо введите число записей, которые вы хотите просмотреть, либо выберите значение из списка.
-
Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить
.
-
Сохраните запрос в качестве NextBirthDays.
Как вы видите, этот тип запросов на набор значений дает ответы на основные вопросы, например «Кто из сотрудников самый старший или самый молодой?». Ниже описано, как с помощью выражений и других условий создавать более точные и гибкие запросы. Запрос по описанным ниже условиям выдает ближайшие дни рождения у трех сотрудников.
Добавление условий в запрос
Для выполнения этих действий используется запрос, созданный в предыдущей процедуре. Вы можете использовать разные запросы на набор значений, если они содержат фактические данные о дате и времени, а не текстовые значения.
Совет: Если вы хотите лучше понять, как работает этот запрос, переключаться между конструктором и представлением таблицы на каждом этапе. Если вы хотите увидеть фактический код запроса, переключение в SQL просмотра. Для переключения между представлениями щелкните правой кнопкой мыши вкладку в верхней части запроса и выберите нужное представление.
-
В области навигации щелкните правой кнопкой мыши запрос NextBirthDays и выберите «Конструктор».
-
В конструкторе запросов в столбце справа от Столбец «ДатаРождения» введите следующую дату:
MonthPart(«m»;[ДатаРождения]).
Это выражение извлекает месяц из BirthDate с помощью функции DatePart. -
В следующем столбце конструктора запросов введите следующую
информацию: DayOfMonthPart(«d»;[ДатаРождения])Это выражение извлекает день месяца из столбца BirthDate с помощью функции
DatePart. -
В строке «Показать» откажитесь от флажков для каждого из двух только что в введеныных выражений.
-
Щелкните строку «Сортировка» для каждого выражения и выберите «По возрастанию».
-
В строке «Условия» столбца «Дата рождения» введите следующее выражение:
Month([Дата рождения]) > Month(Date()) OR Month([Дата рождения])= Month(Date()) AND Day([Дата рождения])>Day(Date())Это выражение делает
следующее:-
Month(
[Дата рождения]) > Month(Date()) указывает, что дата рождения каждого сотрудника приходится на будущий месяц. -
Month( [Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date()) указывает, что если дата рождения приходится на текущий месяц, день рождения приходится на текущий день или после текущего дня.
Коротко говоря, это выражение исключает все записи, в которых дни рождения возникают между 1 января и текущей датой.
-
-
На вкладке «Конструктор» в группе «Настройка запроса» введите «3» в поле «Возврат».
-
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить
.
Примечание: Иногда в вашем запросе с использованием собственных данных может быть больше записей, чем указано. Если данные содержат несколько записей, которые содержат значение, которое является одним из самых верхних значений, запрос возвратит все такие записи, даже если это означает возврат большего числа записей, чем нужно.
К началу страницы
Поиск наиболее или наименее последних дат для групп записей
С помощью итогного запроса можно найти самые ранние или последние даты для записей, которые попадают в группы, например событий, сгруппных по городу. Итоговой запрос — это запрос на выборки, в который для вычисления значений каждого выходного поля используются агрегатные функции (например, «Группировка», «M»и «Максимум», «Количество», «Первое» и «Последнее»).
Включите поле, которое вы хотите использовать для групп по категориям, и поле со значениями, которые вы хотите сгруппировать. Если вы включаете другие выходные поля (скажем, имена клиентов при группировке по типу события), запрос также будет использовать эти поля для формирования групп и изменения результатов, чтобы они не ответили на исходный вопрос. Чтобы добавить подписи к строкам с помощью других полей, создайте дополнительный запрос, использующий итоговые запросы в качестве источника, и добавьте в них дополнительные поля.
Совет: Построение запросов — очень эффективная стратегия для ответа на более сложные вопросы. Если у вас возникли проблемы с выполнением сложного запроса, подумайте, можно ли разбить его на по несложные запросы.
Создание итогового запроса
В этой процедуре для ответа на этот вопрос используются примеры таблиц Events и EventType.
Когда событие было последним в каждом из типов событий, кроме концертов?
-
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
-
Дважды щелкните таблицы Events и EventType.
Каждая таблица отображается в верхней части конструктора запросов. -
Дважды щелкните поле EventType таблицы EventType и поле EventDate из таблицы Events, чтобы добавить поля в таблицу конструктора запросов.
-
В сетке конструктора запросов в строке «Условия» поля EventType введите<>«Концерт».
-
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
-
В сетке конструктора запросов щелкните строку «Итог» в поле «EventDate» и выберите «Максимум».
-
На вкладке Конструктор в группе Результаты выберите команду Режим, а затем — пункт SQL.
-
В окне SQL, в конце предложения SELECT, сразу после ключевого слова AS, замените MaxOfEventDate на MostRecent.
-
Сохраните запрос mostRecentEventByType.
Создание второго запроса для отображения более подробных данных
В этой процедуре для ответа на этот вопрос используется запрос MostRecentEventByType из предыдущей процедуры:
Кто был клиентом на последних событиях каждого типа события?
-
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
-
На вкладке «Запросы» дважды щелкните запрос MostRecentEventByType.
-
На вкладке «Таблицы» дважды щелкните таблицы «Мероприятия» и «Клиенты».
-
В конструкторе запросов дважды щелкните следующие поля:
-
В таблице Events дважды щелкните EventType.
-
В запросе MostRecentEventByType дважды щелкните mostRecent.
-
В таблице «Клиенты» дважды щелкните «Компания».
-
-
В сетке конструктора запросов в строке «Сортировка» столбца EventType выберите «По возрастанию».
-
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
К началу страницы
Для работы с датами в 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. Поэтому формула считает, что неделя начинается с понедельника (второй день недели).
Скачать примеры функций для работы с датами
Для указания текущей даты используется функция СЕГОДНЯ (не имеет аргументов). Чтобы отобразить текущее время и дату, применяется функция ТДАТА ().