Skip to content
В Excel нет специальной функции, чтобы посчитать возраст, однако существует несколько различных способов его определения на основе даты рождения. Вы узнаете несколько приемов, как рассчитать его в количестве полных лет, в годах, месяцах и днях на текущий момент или на какой-то определённый момент времени. Мы объясним преимущества и недостатки каждого способа, покажем, как создать идеальную формулу расчета возраста в Экселе и настроить ее для решения некоторых конкретных задач.
- Основная формула для расчета возраста
- Как определить возраст с функцией ДОЛЯГОДА.
- Как узнать возраст при помощи функции РАЗНДАТ
- Возраст в днях, месяцах и годах
- Сколько будет лет на определенную дату?
- Сколько вам будет в определенный год?
- Узнаём дату, когда человек достигает N лет
- Калькулятор возраста для Excel.
В повседневной жизни вопрос «Сколько вам лет?» обычно подразумевает ответ, указывающий, сколько лет вы прожили. В Microsoft Excel вы можете создать формулу для исчисления точной продолжительности жизни в месяцах, днях, часах и даже минутах. Но давайте не будем нарушать традицию и научимся сначала считать по полным годам.
Основная формула Excel расчета для возраста в годах.
Как вы обычно определяете, сколько вам лет? Просто вычитая дату рождения из текущей. Этот традиционный подход, знакомый нам еще с детства, может также использоваться в Excel.
Если предположить, что день рождения (ДР) записан в ячейке B2, то вычислить возраст в годах можно следующим образом:
=(СЕГОДНЯ()-B2)/365
=(TODAY()-B2)/365
Первая часть выражения (СЕГОДНЯ()-B2) возвращает разницу между текущей и датой рождения в днях. А затем вы делите это на 365, чтобы получить количество лет.
Формула очевидна и легко запоминаема, однако есть небольшая проблема. В большинстве случаев мы получаем число, как показано на скриншоте ниже. Что, согласитесь, несколько непривычно и не слишком удобно.
Чтобы отобразить количество прожитых лет, используйте один из предлагаемых методов округления десятичного числа до ближайшего целого:
=ЦЕЛОЕ((СЕГОДНЯ()-B2)/365)
Функция ЦЕЛОЕ округляет в меньшую сторону до ближайшего целого.
=ОКРУГЛ((СЕГОДНЯ()-B3)/365;0)
Округляет количество прожитых лет по стандартным правилам в зависимости от значения дробной части (более 0,5 — в большую сторону).
=ОКРУГЛВНИЗ((СЕГОДНЯ()-B4)/365;0)
Округляет в меньшую сторону.
=ОТБР((СЕГОДНЯ()-B5)/365;0)
Отбрасывает дробную часть, оставляя только целое.
Во всех случаях ноль в формуле означает, что в возвращаемой цифре не должно быть ни одного десятичного разряда.
Недостатки: использование этого выражения в Экселе дает довольно точные результаты, но не безупречные. Деление на среднее число дней в году в большинстве случаев работает нормально, но иногда все же показывает неверный возраст. Например, если кто-то родился 29 февраля, а сейчас 28 февраля, программа сделает человека на один день старше.
В качестве альтернативы вы можете использовать в знаменателе 365,25 вместо 365, поскольку каждый четвертый год состоит из 366 дней. Однако и этот подход не идеален. Например, если вы рассчитываете возраст ребенка, который еще не прожил високосный год, деление на 365,25 дает неправильный результат.
В целом, вычитание ДР из текущей даты прекрасно работает в обычной жизни, но не является идеальным подходом в Excel. Ведь мы здесь ожидаем получить точный ответ.
Далее мы поговорим о нескольких специальных функциях, которые безошибочно вычисляют возраст независимо от года.
Как определить возраст с функцией ДОЛЯГОДА.
Более надежный способ расчета, чем те, о которых мы говорили ранее, — это использование функции ДОЛЯГОДА (YEARFRAC в английском варианте), которая возвращает часть года, то есть количество целых дней между двумя датами.
Синтаксис здесь следующий:
YEARFRAC (дата_начала, дата_окончания, [базис])
Первые два аргумента очевидны и вряд ли требуют какого-либо дополнительного объяснения. А вот Базис — это аргумент, который определяет основу для подсчета дней.
Чтобы составить абсолютно точную формулу, передайте в ДОЛЯГОДА следующие значения:
- Дата_начала — дата рождения.
- Дата_окончания — функция СЕГОДНЯ() для использования текущего момента времени.
- Базис — используйте 1, которая предписывает Excel делить фактическое количество дней в месяце на фактическое количество дней в году. Никаких усредненных цифр типа 360 или 365 здесь не используется.
Учитывая вышеизложенное, формула Excel для расчета возраста по дате рождения выглядит следующим образом:
=ДОЛЯГОДА(дата рождения, СЕГОДНЯ (), 1)
Предполагая, что ДР вписан в ячейку B2, выражение принимает следующий вид:
=ДОЛЯГОДА(B2, СЕГОДНЯ(), 1)
Как и в предыдущем примере, результат также является десятичным числом. Чтобы исправить это, используйте любой из подходящих вам методов округления.
Итак, вот улучшенный вариант:
Метод округления можете выбрать сами.
=ЦЕЛОЕ(ДОЛЯГОДА(B2;СЕГОДНЯ();1))
=ОКРУГЛ(ДОЛЯГОДА(B3;СЕГОДНЯ();1);0)
=ОКРУГЛВНИЗ(ДОЛЯГОДА(B4;СЕГОДНЯ();1);0)
=ОТБР(ДОЛЯГОДА(B5;СЕГОДНЯ();1);0)
Особенности применения этих функций мы уже рассмотрели выше.
Как узнать возраст в Excel при помощи РАЗНДАТ.
Еще один способ — использование функции РАЗНДАТ (DATEDIF):
= РАЗНДАТ(дата_нач; дата_кон; аргумент)
где
дата_нач и дата_кон — две даты, разницу между которыми необходимо рассчитать,
Она может возвращать разницу в различных единицах времени, таких как годы, месяцы и дни, в зависимости от параметра, который вы задаете в аргументе:
- Y — возвращает количество лет.
- M — количество месяцев.
- D — количество дней.
- YM — возвращает месяцы, игнорируя дни и годы.
- MD — разница в днях, игнорируя месяцы и годы.
- YD — разница в днях, игнорируя годы.
Поскольку мы хотим подсчитать возраст в годах, мы используем параметр «Y»:
=РАЗНДАТ( дата рождения, СЕГОДНЯ(), «Y»)
В этом примере день рождения записан в ячейке B2, и вы ссылаетесь на него в своей формуле возраста:
=РАЗНДАТ(B2;СЕГОДНЯ();»Y»)
В этом случае дополнительная операция округления не требуется, так как РАЗНДАТ с аргументом «Y» сразу выводит количество лет.
Рассчитываем в днях, месяцах и годах.
Высчитывать можно не только количество лет, как это обычно принято, но и более мелкие единицы времени.
Давайте попробуем рассчитать полный возраст, который включает в себя дни, месяцы и годы.
Фактически, определение чьего-либо возраста на основе даты рождения является частным случаем расчета разницы в датах в Excel, где конечной датой является текущий момент времени. Итак, вы используете обычную функцию РАЗНДАТ:
=РАЗНДАТ(B2;СЕГОДНЯ();»Y»)&» лет, «&РАЗНДАТ(B2;СЕГОДНЯ();»YM»)&» мес., «&РАЗНДАТ(B2;СЕГОДНЯ();»MD»)&» д.»
Где В2 — дата рождения.
Ну а если нужно сделать совсем красиво, используйте более сложное выражение:
=ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();»y»);РАЗНДАТ(B2;СЕГОДНЯ();»y»)&» «&ТЕКСТ(ОСТАТ(МАКС(ОСТАТ(РАЗНДАТ(B2;СЕГОДНЯ();»y»)-11;100);9);10);»[<1]год;[<4]года;лет»)&» «;)& ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();»ym»);РАЗНДАТ(B2;СЕГОДНЯ();»ym»)&» меся»&ТЕКСТ(ОСТАТ(РАЗНДАТ(B2;СЕГОДНЯ();»ym»)-1; 11);»[<1]ц;[<4]ца;цев»)&» «;)& ЕСЛИ(РАЗНДАТ(B2;СЕГОДНЯ();»md»);РАЗНДАТ(B2;СЕГОДНЯ();»md»)&» д»&ТЕКСТ(ОСТАТ(МАКС(ОСТАТ(РАЗНДАТ(B2;СЕГОДНЯ();»md»)-11;100);9); 10);»[<1]ень;[<4]ня;ней»);)
И вот что получится:
Более подробно об использовании функции РАЗНДАТ читайте в материале о расчете разности между датами в Excel.
Сколько вам будет на определённую дату?
Вы можете воспользоваться формулой РАЗНДАТ из предыдущего раздела, но вместо СЕГОДНЯ() используйте ссылку на ячейку, в которой и будет указано, на какой именно момент времени вы хотите определить возраст человека.
Кстати, аналогичным образом можно определять и величину трудового стажа.
Итак, вот как это может выглядеть:
Вот расчет:
=РАЗНДАТ(B2;C3;»Y»)&» лет, «&РАЗНДАТ(B2;C3;»YM»)&» мес., «&РАЗНДАТ(B2;C3;»MD»)&» д.»
или же —
=ЕСЛИ(РАЗНДАТ(B2;C3;»y»);РАЗНДАТ(B2;C3;»y»)&» «&ТЕКСТ(ОСТАТ(МАКС(ОСТАТ(РАЗНДАТ(B2;C3;»y»)-11;100);9);10);»[<1]год;[<4]года;лет»)&» «;)& ЕСЛИ(РАЗНДАТ(B2;C3;»ym»);РАЗНДАТ(B2;C3;»ym»)&» меся»&ТЕКСТ(ОСТАТ(РАЗНДАТ(B2;C3;»ym»)-1; 11);»[<1]ц;[<4]ца;цев»)&» «;)& ЕСЛИ(РАЗНДАТ(B2;C3;»md»);РАЗНДАТ(B2;C3;»md»)&» д»&ТЕКСТ(ОСТАТ(МАКС(ОСТАТ(РАЗНДАТ(B2;C3;»md»)-11;100);9); 10);»[<1]ень;[<4]ня;ней»);)
Сколько вам будет лет в определенный год?
Эта формула полезна в ситуациях, когда полная дата для расчета не определена, и вы знаете только год.
Допустим, вы работаете с медицинской базой данных, и ваша цель – выяснить, сколько лет пациенту на момент последнего полного медицинского обследования.
Если предположить, что ДР указан в столбце B, начиная со строки 2, а год последнего медицинского осмотра находится в столбце C, то расчет выглядит следующим образом:
=РАЗНДАТ(B2;ДАТА(C2;1;1);»Y»)
Поскольку точный срок медицинского осмотра не определен, вы используете функцию ДАТА с произвольным аргументом дня и месяца, например, DATА(C3; 1; 1).
Функция ДАТА извлекает номер года из ячейки С2, создает полную дату, используя введенные вами номера месяца и дня (в этом примере 1 января), и передает ее в РАЗНДАТ. В результате вы получаете сумму прожитых пациентом лет по состоянию на 1 января определенного года.
Узнайте дату, когда человек достигает N лет
Предположим, ваш друг родился 21 марта 1974 года. Как вам определить, когда ему исполняется 50 лет? Обычно вы просто добавляете 50 лет к ДР человека. В Excel вы делаете то же самое, используя ДАТА:
=ДАТА(ГОД(B2) + 50; МЕСЯЦ(B2); ДЕНЬ(B2))
Где B2 — день рождения.
Вместо того, чтобы жестко указывать количество лет в формуле, вы можете сослаться на определенную ячейку, в которую ваши пользователи могут вводить сколько угодно лет.
Калькулятор возраста для Excel
Пользователям надстройки Ultimate Suite не нужно беспокоиться о создании своего собственного калькулятора возраста в Excel — это всего лишь пара щелчков мышью:
- Выберите ячейку, в которую вы хотите вставить формулу возраста, перейдите на вкладку «Ablebits Tools»> группу «Date & Time» и нажмите кнопку «Мастер даты и времени (Date & Time Wizard)» .
- Мастер даты и времени запустится, и вы перейдете прямо на вкладку «Возраст (Age)».
- Здесь вам нужно указать 3 параметра:
- Данные о рождении в виде ссылки на ячейку или дату в формате дд/мм/гггг.
- Рассчитывать возраст на сегодняшний день или на конкретную дату.
- Выберите, следует ли рассчитывать возраст в днях, месяцах, годах, неделях, или в полном виде (лет, месяцев, дней).
- Нажмите кнопку « Вставить формулу (Insert Formula)» .
Готово!
Формула мгновенно вставляется в выбранную ячейку, и вы можете дважды щелкнуть маркер заполнения, чтобы скопировать его вниз по столбцу.
Как вы могли заметить, формула, созданная калькулятором возраста в Excel, более сложна, чем те, которые мы обсуждали до сих пор.
К сожалению, пока русской локализации нет, но вы легко можете заменить в формуле английские слова на русские и затем использовать ее там, где это необходимо.
Либо вовсе не добавляйте текст и получите возраст в виде текста «лет/месяцев/дней» (см. ячейку B7 на скриншоте выше).
Если вы хотите избавиться от нулевых единиц, таких как «0 дней», установите флажок «Не показывать нулевые значения».
Также вы можете более подробно узнать о мастере даты и времени здесь.
Если вам интересно протестировать этот калькулятор возраста, а также открыть для себя еще 60 надстроек для экономии времени в Excel, то можете загрузить пробную версию Ultimate Suite. Если вам понравились инструменты и вы решили получить лицензию, не пропустите это специальное предложение для читателей нашего сайта.
Надеюсь, из рассмотренных нами вариантов вы сможете выбрать для себя самый наилучший и удобный, чтобы посчитать возраст человека по дате его рождения.
Также рекомендуем почитать о работе с датами:
Как перевести время в число — В статье рассмотрены различные способы преобразования времени в десятичное число в Excel. Вы найдете множество формул для преобразования времени в часы, минуты или секунды. Поскольку Microsoft Excel использует числовую систему для работы с временем, вы можете…
Формат времени в Excel — Вы узнаете об особенностях формата времени Excel, как записать его в часах, минутах или секундах, как перевести в число или текст, а также о том, как добавить время с помощью…
Как вывести месяц из даты — На примерах мы покажем, как получить месяц из даты в таблицах Excel, преобразовать число в его название и наоборот, а также многое другое. Думаю, вы уже знаете, что дата в…
Как быстро вставить сегодняшнюю дату в Excel? — Это руководство показывает различные способы ввода дат в Excel. Узнайте, как вставить сегодняшнюю дату и время в виде статической метки времени или динамических значений, как автоматически заполнять столбец или строку…
Количество рабочих дней между двумя датами в Excel — Довольно распространенная задача: определить количество рабочих дней в период между двумя датами – это частный случай расчета числа дней, который мы уже рассматривали ранее. Тем не менее, в Excel для…
В этой статье объясняется, как использовать запросы на набор значений для поиска самых последних или самых давних дат в наборе записей. Данные, возвращаемые такими запросами, позволяют получать ответы на различные деловые вопросы, например о том, когда клиент делал заказ в последний раз.
Выберите нужное действие
-
Сведения о работе запросов на набор значений с датами
-
Поиск самой последней или самой давней даты
-
Поиск самых последних или самых давних дат для записей в категории или группе
-
Одновременный поиск самых последних и самых давних дат
Сведения о работе запросов на набор значений с датами
Запросы на набор значений используются, когда возникает необходимость найти в таблице или группе записи, содержащие самую последнюю или самую давнюю дату. Полученные данные позволят отвечать на различные деловые вопросы, например следующие:
-
Когда сотрудник в последний раз продавал товар? Ответ поможет определить наиболее и наименее продуктивных сотрудников.
-
Когда клиент делал заказ в последний раз? Если в течение определенного периода заказов не было, его можно перенести в список неактивных клиентов.
-
У кого ближайшие дни рождения?
Правила создания и использования запросов на набор значений
Для создания запроса на набор значений следует сначала создать запрос на выборку. В зависимости от требуемых результатов вы можете установить для запроса порядок сортировки или преобразовать его в итоговый запрос. При преобразовании используются агрегатные функции, например 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.
Создание простого запроса на набор значений
-
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
-
В диалоговом окне щелкните таблицу, которую вы хотите использовать в запросе, нажмите Добавить, чтобы поместить ее в верхний раздел конструктора запросов, и нажмите кнопку Закрыть.
-или-
Дважды щелкните таблицу, а затем нажмите кнопку Закрыть.
Если вы используете пример данных из предыдущего раздела, добавьте в запрос таблицу Employees.
-
Добавьте на бланк поля, которые вы хотите использовать в запросе. Вы можете дважды щелкнуть каждое поле или перетащить его в пустую ячейку в строке Поле.
Если вы работаете с примером таблицы, то добавьте поля «Фамилия», «Имя» и «Дата рождения».
-
В поле, которое содержит искомые наибольшие или наименьшие значения (при использовании примера таблицы — поле «Дата рождения), в строке Сортировка выберите порядок сортировки По возрастанию или По убыванию.
При сортировке по убыванию будут возвращены самые последние даты, при сортировке по возрастанию — самые давние.
Важно: В строке Сортировка следует установить значение только для полей, содержащих даты. Если порядок сортировки задан по другому полю, запрос не вернет ожидаемых результатов.
-
На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.
-
Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить
.
-
Сохраните запрос и оставьте его открытым, чтобы использовать на следующих шагах.
Как вы видите, этот тип запросов на набор значений дает ответы на основные вопросы, например «Кто из сотрудников самый старший или самый молодой?». Ниже описано, как с помощью выражений и других условий создавать более точные и гибкие запросы. Запрос по описанным ниже условиям выдает ближайшие дни рождения у трех сотрудников.
Добавление условий в запрос
Примечание: В этих инструкциях предполагается, что вы используете запрос, описанный в предыдущем разделе.
-
Откройте запрос, созданный на предыдущих шагах, в Конструкторе.
-
В бланке запроса в столбце справа от столбца «Дата рождения» скопируйте и вставьте или введите следующее выражение: Expr1: DatePart(«m»; [Дата рождения]). Затем нажмите кнопку Выполнить.
Функция DatePart извлекает месяц из значения в поле «Дата рождения».
-
Переключитесь в Конструктор.
-
Справа от первого выражение вставьте или введите следующее выражение: Expr2: DatePart(«d»; [Дата рождения]). Затем нажмите кнопку Выполнить.
В этом случае функция DatePart извлекает день из значения в поле «Дата рождения».
-
Переключитесь в Конструктор.
-
Для обоих введенных выражений снимите флажки в строке Показать, щелкните строку Сортировка и выберите пункт По возрастанию.
-
Нажмите кнопку Запустить.
-
При необходимости вы можете указать условия для ограничения области запроса. После этого запрос будет сортировать только записи, удовлетворяющие им, и определять первые или последние значения полей из отсортированного списка.
Для продолжения работы с примером данных откройте Конструктор. Затем в строке Условия отбора столбца Дата рождения введите следующее выражение:
Month([Дата рождения]) > Month(Date()) Or Month([Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date())
Это выражение делает следующее: Месяц([Дата рождения]) > Month(Date()) проверяет дату рождения каждого сотрудника, чтобы узнать, приходится ли она на следующий месяц, и, если это так, включает эти записи в запрос. Месяц([Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date()) в выражении проверяет даты рождения, которые происходят в текущем месяце, чтобы узнать, приходится ли на день рождения или после текущего дня. Если это условие истинно, функция включает эти записи в запрос. Краткое выражение игнорирует все записи, в которых день рождения приходится на период с 1 января до даты выполнения запроса.
Другие примеры выражений условий для запросов можно найти в статье Примеры условий запроса.
-
На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.
Чтобы просмотреть следующие три дня рождения, введите 3.
-
Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить
.
Если отображается больше записей, чем требовалось
Если в данных есть записи с одинаковым значением даты, запрос может возвращать больше записей, чем вы указали. Например, вы можете создать запрос на набор значений для получения записей о трех сотрудниках, н запрос вернет четыре, поскольку у Измайлова и Быкова дни рождения совпадают, как указано в следующей таблице.
|
Фамилия |
ДатаРождения |
|
Белых |
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 заменяет текстовые значения столбцов «Тип мероприятия» и «Клиент» числовыми значениями из исходных таблиц.
Дополнительные сведения о создании и использовании полей подпапок см. в статьях «Создание и удаление многофаентного поля» и «Руководство по полям, которые могут быть многоценными». В них описывается создание поля подстановки, позволяющего выбирать для поля несколько значений, а также создание списков подстановки.
Создание итогового запроса
-
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
-
Дважды щелкните таблицы, которые вы хотите использовать. Таблицы появятся в верхней части конструктора запросов.
При использовании приведенных выше примеров добавьте таблицы «Мероприятия» и «Типы мероприятий».
-
Дважды щелкните поля таблицы, которые вы хотите использовать в запросе. На данном этапе к запросу следует добавить только поля категорий или групп и поле значений.
При использовании данных из трех приведенных выше таблиц следует добавить либо поле «Тип мероприятия» из таблицы «Типы мероприятий», либо поле «Дата мероприятия» из таблицы «Мероприятия».
-
При необходимости вы можете указать условие для ограничения области запроса. Сортироваться будут только записи, удовлетворяющие этому условию, и в отсортированном списке будут определены первые и последние значения полей.
Например, если вы хотите просмотреть мероприятия с категорией «Частное мероприятие», в строку Условия отбора в столбце Тип мероприятия следует ввести выражение <>»Частное мероприятие».
Другие примеры выражений условий для запросов можно найти в статье Примеры условий запроса.
-
Преобразуйте этот запрос в итоговый запрос следующим образом:
На вкладке Конструктор в группе Показать или скрыть нажмите кнопку Итоги.
В бланке запроса появится строка Итоги.
-
Убедитесь, что в строке Итоги поля каждой группы или категории выбран пункт Группировка по, и выберите для строки Итоги поля значения (поля с наибольшими или наименьшими значениями) функцию Max или Min.
Функция Max возвращает наибольшее значение числового поля и самое последнее значение даты или времени в поле с типом данных «Дата/время». Функция Min возвращает наименьшее значение в числовом поле и самую раннюю дату или время в поле «Дата/время».
-
На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.
В этом случае для просмотра результатов в режиме таблицы выберите параметр Все и нажмите кнопку Выполнить.
Примечание: В зависимости от функции, выбранной на шаге 6, Access изменяет имя поля значения в запросе на Максимум_ИмяПоля или Минимум_ИмяПоля. В нашем примере поле будут переименовано в Максимум_Дата мероприятия или Минимум_Дата мероприятия.
-
Сохраните запрос и переходите к следующим шагам.
Запрос не возвращает названия продуктов и другую информацию о них. Чтобы просмотреть дополнительные данные, необходимо создать второй запрос, который включает в себя запрос, который вы только что создали. Далее описано, как это сделать.
Создание второго запроса для отображения более подробных данных
-
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
-
Перейдите на вкладку «Запросы», а затем дважды щелкните итоговую таблицу, созданную в предыдущем разделе.
-
Откройте вкладку Таблицы и добавьте таблицы, которые вы использовали в итоговом запросе, а также таблицы, в которых содержатся дополнительные данные. Если вы использовали три таблицы из примера, добавьте в новый запрос таблицы «Типы мероприятий», «Мероприятия» и «Клиенты».
-
Свяжите поля в итоговом запросе с соответствующими полями в родительских таблицах. Для этого перетащите каждое поле из итогового запроса на соответствующее поле в таблице.
При использовании примеров данных из трех таблиц перетащите столбец «Тип мероприятия» из итогового запроса на поле «Тип мероприятия» в таблице «Типы мероприятий». Затем перетащите столбец Максимум_Дата мероприятия в итоговом запросе на поле «Дата мероприятия» в таблице «Мероприятия». Благодаря объединению новый запрос на выборку связывает данные из итогового запроса с данными из других таблиц.
-
Добавьте в запрос поля с дополнительной информацией из других таблиц.
При использовании примеров данных из трех таблиц можно добавить поля «Компания» и «Контакт» из таблицы «Клиенты».
-
При желании вы можете задать порядок сортировки по одному или нескольким столбцам. Например, для вывода категорий в алфавитном порядке задайте в строке Сортировка столбца Тип мероприятия значение По возрастанию.
-
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
Результаты запроса отображаются в режиме таблицы.
Совет: Если вам не нравится, что заголовок столбца Цена называется Максимум_Цена или Минимум_Цена, то откройте запрос в Конструкторе и в столбце «Цена» в бланке запроса введите Цена: Максимум_Цена или Цена: Минимум_Цена. После этого в заголовке столбца в режиме таблицы будет выводиться название Цена.
К началу страницы
Одновременный поиск самых последних и самых давних дат
Запросы, созданные ранее в этой статье, возвращают либо наибольшие, либо наименьшие значения, но не оба набора сразу. Если вы хотите отобразить оба набора значений в одном представлении, следует создать два запроса (один для получения наибольших значений и другой для получения наименьших значений), а затем объединить и сохранить результаты в одной таблице.
Поиск наибольших и наименьших значений и отображение этих данных в таблице состоит из следующих основных этапов:
-
Создание запроса на поиск наибольших значений и запроса на поиск наименьших значений или, при необходимости группировки данных, создание итоговых запросов, использующих функции Min и Max.
-
Преобразование запроса на поиск наибольших значений (или итогового запроса на поиск максимальных значений) в запрос на создание таблицы и выполнение этого запроса.
-
Преобразование запроса на поиск наименьших значений (или итогового запроса на поиск минимальных значений) в запрос на добавление для добавления записей в таблицу наибольших значений.
Ниже описано, как это сделать.
Создание запросов
-
Создайте запросы на поиск наибольших и наименьших значений.
Шаги, необходимые для создания запроса на поиск наибольших или наименьших значения, описаны выше в разделе Поиск самой последней или самой давней даты. Если нужно сгруппировать записи по категориям, обратитесь к разделу Поиск самых последних или самых давних дат для записей в категории или группе.
Если используются таблицы примеров из предыдущего раздела, используйте только данные из таблицы «Мероприятия». Используйте в обоих запросах поля «Тип мероприятия», «Клиент» и «Дата мероприятия» из таблицы «Мероприятия».
-
Сохраните оба запроса, присвоив им описательные имена, например «Наибольшее значение» и «Наименьшее значение», и оставьте их открытыми для использования на следующих этапах.
-
Создание запроса на создание таблицы
-
В запросе на поиск наибольших значений, открытом в Конструкторе:
На вкладке Конструктор в группе Тип запроса нажмите кнопку Создание таблицы.
Откроется диалоговое окно Создание таблицы.
-
В поле Имя таблицы введите имя таблицы, которая будет хранить записи с наибольшими и наименьшими значениями. Например, введите Наименьшие и наибольшие значения, а затем нажмите кнопку ОК.
Каждый раз при выполнении запроса вместо отображения результатов в режиме таблицы запрос будет создавать таблицу и замещать значения текущими данными.
-
Сохраните и закройте запрос.
Создание запроса на добавление
-
Откройте запрос на поиск наименьших значений в Конструкторе.
На вкладке Разработка в группе Тип запроса выберите команду Добавить.
-
Откроется диалоговое окно Добавление.
-
Введите то же имя, которое вы указали в диалоговом окне Создание таблицы.
Например, введите Наименьшие и наибольшие значения, а затем нажмите кнопку ОК. Каждый раз при выполнении запроса вместо отображения результатов в режиме таблицы он будет добавлять записи в таблицу «Наибольшие и наименьшие значения».
-
Сохраните и закройте запрос.
Выполнение запросов
-
Теперь вы готовы запустить оба запроса. В области навигации дважды щелкните запрос на поиск наибольших значений и нажмите кнопку Да при появлении подтверждения. Затем дважды щелкните запрос на поиск наименьших значений и нажмите кнопку Да при появлении подтверждения.
-
Откройте таблицу с набором записей в режиме таблицы.
Важно: Если при попытке выполнения запроса на создание или добавление ничего не происходит, проверьте, не появляется ли в строке состояния Access следующее сообщение:
Данное действие или событие заблокировано в режиме отключения.
Если выводится это сообщение, сделайте следующее:
-
Откройте панель сообщений, если она скрыта. Для этого на вкладке Работа с базами данных в группе Показать или скрыть нажмите кнопку Панель сообщений.
-
На панели сообщений нажмите Параметры.
Откроется диалоговое окно Параметры безопасности Microsoft Office.
-
Выберите Включить это содержимое, а затем кнопку ОК.
-
Выполните запрос еще раз.
К началу страницы
Сортировка по дате в Excel.
Смотрите также (дд.мм.гггг) нужно отсортироватьДопустим, у вас код 32, РТС вернет ЛОЖЬ, а специальной вставке (надо эту ячейку, потом (СОРТИРОВКА И ФИЛЬТР (Enterом вставлять или на букве столбцаDATEDIFФункция формат, т.д. Читайте Ивановой. затем – «Сотрудники». функцию «Сортировка от

Владимир ячейке А2 стояла в этом дело? с датами, сециальная
— Порядок - и вставлять). столбец ( даты). количество дней («d»)
(ДАТА) принимает три статье «Как скопировать
работать со сводной будут размещены в — вверху столбца как текст, иполучится, если даты наступления дня рождения). колонка и дата: Всё через умножение дата — тогдаBootleg80 вставка — умножить. Настраиваемый список) уВариант 2 Нажать на пиктограмму


не будет сортировать будут написаны вOrmandiore рождения вторая колонка. получилось.



«Фильтр» и смотреть «от Я к=DATEIF(B2,C2,»d»)Мы использовали функцию количество дней до сводной таблицы Excel» новом листе. будут новые даты,Преобразование текста в дату ячейках может быть столбцах получить день формат ДД. ММ.

тут.Теперь можно сортировать данные
т.д. Excel установлен формат «Дата», и месяц от ГГГГ, установленный в В получился через этих пробелов, выделите файле »даты» ,: А могли бы: Коллеги,

(РАЗНДАТ), чтобы найти следуйте инструкции ниже:Фильтр по дате в в любом порядкеПолучится так.описано в статье а значение в даты рождения (формулы меню формат ячейки.
excel-office.ru
Как рассчитать в Excel количество дней до дня рождения
умножение, а столбец столбец в котором зашел в формат подробней объяснить?
- Помогите, пожалуйста!: все Выстроит по датам командой сайта office-guru.ru
- количество полных летВыделите ячейку Excel. – сортировка отЕще один способ «Преобразовать текст в
- этой ячейке написаны =день (А2) иЧто делаем. Создаем С — нет… их надо удалить, — тыкнул ДАТА
Я в ячейку
Нужно отсортировать данныеТатьяна теплостанская
- и месяцам иИсточник: http://www.excel-easy.com/examples/days-until-birthday.html («у») между датойA2Можно в таблице
- старых к новым,сортировки дат в дату Excel». в другом формате, =месяц (А2) соответственно, третью колонку копированиемПодскажите как можно отсортировать
- нажмите Ctrl+H, вставьте — а Вы написал 1, нажал
- по дате.: Задайте Формат ячейки годам. Но будетПеревел: Антон Андронов рождения и сегодняшними введите дату поставить фильтр. Тогда от новых кExcelВсё, установили формат например – текстом.
- где А2 - второй колонки. Форматируем людей в excel этот пробел из говорите, что это правой кнопкой -
Если выбираю сортировку
столбца - "Дата"
неудобно из-за того,Автор: Антон Андронов
днём.
рождения.
можно будет фильтровать
office-guru.ru
Как в экселе отсортировать список людей по дням рождения?
старым, т. д.– использовать сводную в ячейках всех Тогда Excel увидит ячейка с датой третью колонку в по датам рождения, буфера в поле не дата а скопировать от А до типа 17.03 или что по годам
Имеется список около 700ФормулаВыделите ячейку даты по месяцам,Например, мы отсортируем таблицу. дат «Дата». Теперь в ячейке текст, рождения) ) формат ДД. ММ. но нужно что Найти, поле Заменить текст?далее выделил столбец Я — он 17 мар. Введите выстраиваются. Это Вы,
человек и вручную
РАЗНДАТ(A2;B2;»у»)B2 дням. Нужно убрать людей, у которыхУ нас такая можно их сортировать. а не дату.выделить таблицу. меню Выделяем колонки от бы учитывался только оставьте пустым иХочу разобраться… с »датами», нажал сортирует все 1
в этот столбец
скорее всего, знаете. становится не реальновозвращает значение 32.
и введите функцию галочки у слов
дата рождения была таблица с перечнемО других способах Визуально можно проверить данные — сортировка третьей к первой. месяц но не нажмите Заменить всеBootleg80 специальная ставка умножить потом двойки , даты: день. месяц,Вариант 1
перемещать строчки сЕсли 32 полных годаTODAY «Выделить все» и в прошлом году. сотрудников и датами сортировки смотрите в формат даты так. — сортировать по Так и не год. Заранее спасибо
Сортировка по дате
Владимир: И еще вопрос:
— и ничего…
а мне нужно а в другой
Можно добавить первую людьми в нужном прошло с момента(СЕГОДНЯ), чтобы вернуть поставить галочки у Нажимаем на стрелку рождения их детей, статье «Сортировка в
А теперь посмотрим на
по столбцу месяц
иначе. Затем нажимаем за ответ!: Нет там пробелов.Как убрать лишний
Могли бы сделать с 11 января столбец — год, колонку (столбец) и порядке. А сам вашего дня рождения
сегодняшнюю дату. нужных дней, месяцев,
у строки «Названия внуков, родителей, т.д. Excel».
дату в ячейке по возрастанию, затем кнопку сортировки (а/яАлексей матевосов (alexm)
Как Вам посоветовали, пробле в ММВБ на моей файле по 30 декабря.
Тогда всё отлично вбить месяцы, затем эксель сортирует только (другими словами, вы
Самое трудное в расчёте т.д. строк». В появившемся
Выделяем таблицу с шапкой.Сортировка по дате в А18. по столбцу день со стрелкой) в: Решить поставленную задачу
сделать спец. вставку / РТС -
— я былФайл прикладываю! сортируется- и по отсортировать по этой дату целиком, а уже отметили свой количества дней доПро другие возможности фильтра диалоговом окне выбираем
На закладке «Вставка»
Excel.Здесь написана дата (значение)
по возрастанию панели инструментов. Готово. можно по-разному, средствами через умножение, так а то он бы очень признателен…Надеюсь на помощь!
дате в месяце колонке, но это мне нужно чтобы 32-ой день рождения), вашего рождения – читайте в статье функцию «Фильтр по в разделе «Таблицы»
Выделяем столбец. Нажимаем текстом, п.ч. дописалиАнатолий евсюков Третью колонку можете самого Excel или и делайте. не воспринимает цифрыВладимирwebley и по месяцам. минут 15 надо
сначала стояли январские значит в следующий найти следующий день «Фильтр в Excel». дате». Из появившегося нажимаем на кнопку
на кнопку «Сортировка букву «г», хотя: В соседней ячейке удалить. VBA.webley — а думает,
: Сортировка по дате: потому что этоКстати, предусмотренная для
затратить. Полностью месяцы именинники, потом февральские, день рождения вы рождения. Формула нижеВ Excel есть
planetaexcel.ru
Как отсортировать данные по дням рождения
списка выбираем – функции «Сводная таблица». и фильтр» на формат самой ячейки записать функцию Числовое- VladВ данном случае: Вот тут я
что это тест прошла успешно. не дата, а ячеек типа Дата печатать не придется,
мартовские и так будете отмечать 32 выполняет этот трюк. функция «Заполнить», которая «В прошлом году».
Появившееся поле заполняем закладке «Главная», или стоит – «Дата». значение даты. Скопировать: СОРТИРОВАТЬ ДАТУ ПО целесообразно решить средствами не соглашусь -webleywebley
текст в Excel настраиваемая так как будет далее… + 1 ==DATE(YEAR(A2)+DATEDIF(A2,B2,»y»)+1,MONTH(A2),DAY(A2)) помогает быстро заполнитьПолучились такие данные. В так. вызываем контекстное меню Дата в ячейке данную ячейку по МЕСЯЦУ Excel, так как
есть там пробелы,: функция =ЕЧИСЛО(A2) в: умножить — это
Excel 2007 сортировка дат дней рождения
Введите в любую сортировка (в т. появляться месяц поАлексt 33 летие.=ДАТА(ГОД(A2)+РАЗНДАТ(A2;B2;»y»)+1;МЕСЯЦ(A2);ДЕНЬ(A2))
столбцы, ячейки, пустые прошлом году датаСначала ставим галочку у правой мышкой. Выбираем А18 расположена в всем ФИО. ОтсортироватьИмеется таблица с фамилиями задача будет использована причем разные: ММВТ вашем первоначальном файле
такой пункт в ячейку 1, скопируйте ч. по месяцам) первым набранным буквам: Щелкните ЛК мышиДалее используем функциюПояснение:
строки, скопировать формулы, рождения только у слов «Дата рождения», из появившегося окна ячейке слева, как по данному столбцу и датами рождения
всего раз.
Содержание
- Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в EXCEL. Аналог ВПР()
- Точное совпадение
- Ближайшее ЧИСЛО (ДАТА)
- Ближайшее время
- Поиск в EXCEL ДАТЫ ближайшей к заданной
- Поиск записей с самыми последними или самыми давними датами
- Выберите нужное действие
- Сведения о работе запросов на набор значений с датами
- Правила создания и использования запросов на набор значений
- Выбор между запросом на набор значений и фильтром
- Поиск самой последней или самой давней даты
- Создание простого запроса на набор значений
- Добавление условий в запрос
- Если отображается больше записей, чем требовалось
- Если отображается меньше записей, чем требовалось
- Если выводятся повторяющиеся записи
- Поиск самых последних или самых давних дат для записей в категории или группе
Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в EXCEL. Аналог ВПР()
history 14 мая 2015 г.
С помощью функции ВПР() можно выполнить поиск в столбце таблицы (называется ключевым столбцом), а затем вернуть значение из той же строки, но другого столбца. Здесь рассмотрим более сложный поиск: искать будем не среди всех значений ключевого столбца, а только среди значений удовлетворяющих дополнительному условию.
Точное совпадение
Сначала вкратце напомним работу ВПР() — VLOOKUP() с аргументом интервальный_просмотр = ЛОЖЬ (когда ищется значение в ключевом столбце точно соответствующее критерию).
Задача: Для заданного пользователем Товара найти в таблице соответствующую цену и количество (см. файл примера ).
Решение очевидно ( =ВПР(B10;B13:C15;2;0) ) и подробно рассмотрено в статье про ВПР() .
Предположим, что исходная таблица усложнилась — добавился столбец с номерами заказов.
Теперь необходимо искать заданный Товар не по всему столбцу Товар, а лишь в строках, относящегося к заданному пользователем Заказу.
Найдем количество и цену для товара Мандарины в Заказе 2.
В ячейках А21 и В21 введем номер Заказа и наименование товара.
В ячейке С21 введем формулу массива :
=ЕСЛИ(МАКС(ЕСЛИ((Таб1[Заказ]=A21)*(Таб1[Товар]=B21);Таб1[Количество];»»));МАКС(ЕСЛИ((Таб1[Заказ]=A21)*(Таб1[Товар]=B21);Таб1[Количество];»»));»В заказе нет искомого Товара»)
Аналогичную формулу можно использовать для поиска цены.
Ближайшее ЧИСЛО (ДАТА)
В предыдущей задаче предполагалось, что наименование Товара присутствует в Заказе в единственном экземпляре и точно соответствует критерию поиска. Однако, существует класс задач, когда это не так. Особенно часто встречаются задачи поиска ближайшего ЧИСЛА (если точное значение в ключевом столбце не найдено, то выводится ближайшее).
Примечание . Формулы, созданные для поиска ближайших ЧИСЕЛ, работают и для ДАТ, т.к. даты в MS EXCEL хранятся в числовом формате .
Сначала вкратце напомним работу ВПР() — VLOOKUP() с аргументом интервальный_просмотр = ИСТИНА (когда ищется значение в ключевом столбце точно или приблизительно совпадающее с критерием).
Задача: Для указанной пользователем Даты найти соответствующую ей цену (см. файл примера ).
Напомним, что для ВПР() с аргументом интервальный_просмотр = ИСТИНА требуется сортированный по возрастанию ключевой столбец (Дата). При отсутствии в столбце точного совпадения выводится наибольшее значение, которое меньше искомого. При наличии нескольких одинаковых подходящих значений в ключевом столбце, учитывается, то что ниже. Поэтому Цена выведена 220р., а не 240 и не 230.
Теперь необходимо для заданной пользователем Даты найти соответствующую ей цену, но эта Цена и дата должны относится к заданному пользователем Продавцу.
Другими словами, найдем цену на дату, ближайшей к заданной, но только для определенно продавца.
В ячейках А25 и В25 введем Продавца и дату.
Прежде чем писать формулу, определимся, что значит «ближайший». На самом деле можно дать несколько определений, нужный вариант выбирается исходя из условий решаемой задачи.
Вот несколько возможных определений:
1. В терминах функции ВПР() «ближайший» — это наибольшее значение, которое меньше искомого. При наличии нескольких одинаковых подходящих значений в ключевом столбце, учитывается, то что расположено ниже в таблице. Понятно, что такое значение может быть не обязательно ближайшим.
2. Другой вариант: наименьшее значение, которое больше искомого. При наличии нескольких одинаковых значений в ключевом столбце, учитывается, то что выше.
3. Ближайшее, т.е. та дата, которая ближе, чем все остальные (м.б. раньше или позже заданной). Если таких дат несколько, то учитывается нижняя и выводится соответствующая ей цена.
Еще несколько вариантов предложено в файле примера .
Понятно, что для каждого определения ближайшего требуется своя формулы массива (все их можно найти в файле примера ).
Формулы для определения цены, как правило, используют результат формулы определяющей ближайшую дату.
Ближайшее время
Поскольку как и дата, так и время в EXCEL хранятся в числовом формате (см. здесь https://excel2.ru/articles/kak-excel-hranit-datu-i-vremya ), то формулы будут работать и для дат с указанием времени, например 03.12.2018 15:06.
В файле примера есть лист для демонстрации работы функции ВПР() для столбца данных со временем (требуется сортировка по возрастанию).
На том же листе решена и другая задача: в столбце, содержащих время в часах и минутах, выделяются строки, которые попадают в заданный интервал времени (сортировка не обязательна).
Источник
Поиск в 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 хранит дату и время ), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел Ближайшее ЧИСЛО ).
Источник
Поиск записей с самыми последними или самыми давними датами
В этой статье объясняется, как использовать запросы на набор значений для поиска самых последних или самых давних дат в наборе записей. Данные, возвращаемые такими запросами, позволяют получать ответы на различные деловые вопросы, например о том, когда клиент делал заказ в последний раз.
Выберите нужное действие
Сведения о работе запросов на набор значений с датами
Запросы на набор значений используются, когда возникает необходимость найти в таблице или группе записи, содержащие самую последнюю или самую давнюю дату. Полученные данные позволят отвечать на различные деловые вопросы, например следующие:
Когда сотрудник в последний раз продавал товар? Ответ поможет определить наиболее и наименее продуктивных сотрудников.
Когда клиент делал заказ в последний раз? Если в течение определенного периода заказов не было, его можно перенести в список неактивных клиентов.
У кого ближайшие дни рождения?
Правила создания и использования запросов на набор значений
Для создания запроса на набор значений следует сначала создать запрос на выборку. В зависимости от требуемых результатов вы можете установить для запроса порядок сортировки или преобразовать его в итоговый запрос. При преобразовании используются агрегатные функции, например Max или Min для возврата наибольшего или наименьшего значения и First или Last для получения самой последней или самой давней даты. Итоговые запросы и агрегатные функции используются только для поиска данных, которые попадают в набор групп или категорий. Предположим, что нужно найти объем продаж за указанную дату для каждого города, в котором работает компания. В этом случае города становятся категориями (необходимо собрать данные по городам), поэтому можно использовать итоговый запрос.
В процессе работы помните, что в запросе (независимо от его типа) должны использоваться поля, содержащие описательные данные, например имена клиентов, и поля со значениями даты, среди которых будет производиться поиск. Кроме того, значения даты должны находиться в полях с типом данных «Дата/время». Запросы, описанные в этой статье, не будут правильно работать со значениями дат в текстовых полях. Кроме того, при использовании итогового запроса поля данных должны содержать информацию о категории, например о городе или стране.
Выбор между запросом на набор значений и фильтром
Чтобы определить, стоит ли создавать запрос на набор значений или же следует применить фильтр, примите во внимание следующее:
Если вы хотите получить записи, в полях которых содержатся самые последние или самые давние даты, а точные значения дат неизвестны или не имеют значения, следует создать запрос на набор значений.
Если вы хотите получить все записи, в которых даты совпадают с определенной датой, предшествуют ей или следуют за ней, используйте фильтр. Например, для просмотра дат продаж между апрелем и июлем нужно применить фильтр. Подробное обсуждение фильтров выходит за пределы данной темы.
Дополнительные сведения о создании и использовании фильтров см. в статье «Применение фильтра для просмотра отдельных записей в базе данных Access».
Поиск самой последней или самой давней даты
В этом разделе приведены инструкции по созданию простого запроса на набор значений, использующего порядок сортировки, а также более сложного запроса с выражениями и другими условиями. Сначала описаны основные шаги создания запроса на набор значений, а затем показывается, как найти ближайшие дни рождения сотрудников путем добавления условий. Используются данные из следующей таблицы.
Страна или регион
Дата приема на работу
Загородное шоссе, д. 150
ул. Гарибальди, д. 170
ул. Кедрова, д. 54
ул. Губкина, д. 233
пл. Хо Ши Мина, д. 15, кв. 5
ул. Ляпунова, д. 70, кв. 16
ул. Строителей, д. 150, кв. 78
ул. Вавилова, д. 151, кв. 8
При этом вы можете ввести образец данных в новую таблицу вручную или скопировать этот пример таблицы в программу для работы с электронными таблицами, например Microsoft Excel, а затем импортировать полученный листа в таблицу с помощью Access.
Создание простого запроса на набор значений
На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
В диалоговом окне щелкните таблицу, которую вы хотите использовать в запросе, нажмите Добавить, чтобы поместить ее в верхний раздел конструктора запросов, и нажмите кнопку Закрыть.
Дважды щелкните таблицу, а затем нажмите кнопку Закрыть.
Если вы используете пример данных из предыдущего раздела, добавьте в запрос таблицу Employees.
Добавьте на бланк поля, которые вы хотите использовать в запросе. Вы можете дважды щелкнуть каждое поле или перетащить его в пустую ячейку в строке Поле.
Если вы работаете с примером таблицы, то добавьте поля «Фамилия», «Имя» и «Дата рождения».
В поле, которое содержит искомые наибольшие или наименьшие значения (при использовании примера таблицы — поле «Дата рождения), в строке Сортировка выберите порядок сортировки По возрастанию или По убыванию.
При сортировке по убыванию будут возвращены самые последние даты, при сортировке по возрастанию — самые давние.
Важно: В строке Сортировка следует установить значение только для полей, содержащих даты. Если порядок сортировки задан по другому полю, запрос не вернет ожидаемых результатов.
На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.
Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить 
Сохраните запрос и оставьте его открытым, чтобы использовать на следующих шагах.
Как вы видите, этот тип запросов на набор значений дает ответы на основные вопросы, например «Кто из сотрудников самый старший или самый молодой?». Ниже описано, как с помощью выражений и других условий создавать более точные и гибкие запросы. Запрос по описанным ниже условиям выдает ближайшие дни рождения у трех сотрудников.
Добавление условий в запрос
Примечание: В этих инструкциях предполагается, что вы используете запрос, описанный в предыдущем разделе.
Откройте запрос, созданный на предыдущих шагах, в Конструкторе.
В бланке запроса в столбце справа от столбца «Дата рождения» скопируйте и вставьте или введите следующее выражение: Expr1: DatePart(«m»; [Дата рождения]). Затем нажмите кнопку Выполнить.
Функция DatePart извлекает месяц из значения в поле «Дата рождения».
Переключитесь в Конструктор.
Справа от первого выражение вставьте или введите следующее выражение: Expr2: DatePart(«d»; [Дата рождения]). Затем нажмите кнопку Выполнить.
В этом случае функция DatePart извлекает день из значения в поле «Дата рождения».
Переключитесь в Конструктор.
Для обоих введенных выражений снимите флажки в строке Показать, щелкните строку Сортировка и выберите пункт По возрастанию.
Нажмите кнопку Запустить.
При необходимости вы можете указать условия для ограничения области запроса. После этого запрос будет сортировать только записи, удовлетворяющие им, и определять первые или последние значения полей из отсортированного списка.
Для продолжения работы с примером данных откройте Конструктор. Затем в строке Условия отбора столбца Дата рождения введите следующее выражение:
Month([Дата рождения]) > Month(Date()) Or Month([Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date())
Это выражение делает следующее: Месяц([Дата рождения]) > Month(Date()) проверяет дату рождения каждого сотрудника, чтобы узнать, приходится ли она на следующий месяц, и, если это так, включает эти записи в запрос. Месяц([Дата рождения])= Month(Date()) And Day([Дата рождения])>Day(Date()) в выражении проверяет даты рождения, которые происходят в текущем месяце, чтобы узнать, приходится ли на день рождения или после текущего дня. Если это условие истинно, функция включает эти записи в запрос. Краткое выражение игнорирует все записи, в которых день рождения приходится на период с 1 января до даты выполнения запроса.
Другие примеры выражений условий для запросов можно найти в статье Примеры условий запроса.
На вкладке «Конструктор» в группе «Настройка запроса» щелкните стрелку вниз рядом со списком «Все» (список «Главные значения») и введите нужное количество записей или выберите нужный вариант из списка.
Чтобы просмотреть следующие три дня рождения, введите 3.
Чтобы выполнить запрос и отобразить результаты в режиме таблицы, нажмите кнопку Выполнить 
Если отображается больше записей, чем требовалось
Если в данных есть записи с одинаковым значением даты, запрос может возвращать больше записей, чем вы указали. Например, вы можете создать запрос на набор значений для получения записей о трех сотрудниках, н запрос вернет четыре, поскольку у Измайлова и Быкова дни рождения совпадают, как указано в следующей таблице.
Если отображается меньше записей, чем требовалось
Предположим, что вы создали запрос, возвращающий наибольшие или наименьшие пять записей в поле, но он возвращает только три. Как правило, чтобы решить эту проблему, нужно открыть запрос в Конструкторе и проверить строку Условия отбора для столбцов в бланке запроса.
Дополнительные сведения об условиях см. в статье Примеры условий запроса.
Если выводятся повторяющиеся записи
Если запрос на набор значений возвращает повторяющиеся значения, то либо базовые таблицы содержат повторяющиеся записи, либо записи отображаются как одинаковые, потому что запрос не включает поля, значения которых позволяют их различить. Например, в следующей таблице показан результат запроса, отображающего пять последних отгруженных заказов вместе с именем продавца, который проводил транзакцию.
Третья и четвертая записи кажутся одинаковыми, но это может объясняться тем, что Попов обработал два различных заказа, отгруженных в один день.
Чтобы избежать отображения повторяющихся записей, можно выполнить одно из двух действий в зависимости от требуемого результата. Вы можете изменить структуру запроса, добавив поля, которые позволят различить записи, например поля «КодЗаказа» и «КодКлиента». Или, если достаточно показать только одну из повторяющихся записей, вы можете выбрать отображение только уникальных записей, задав значение Да для свойства запроса Уникальные значения. Чтобы задать значение этого свойства, в Конструктор щелкните правой кнопкой мыши в любом свободном месте в верхней половине окна конструктора запросов и выберите в контекстном меню команду Свойства. В окне свойств найдите свойство Уникальные значения и задайте для него значение Да.
Дополнительные сведения о работе с повторяющимися записями см. в статье Поиск, скрытие или удаление повторяющихся данных.
Поиск самых последних или самых давних дат для записей в категории или группе
Для поиска самых последних или самых давних дат для записей, входящих в группы или категории, используются итоговые запросы. Итоговый запрос представляет собой запрос на выборку, в котором для вычисления значений определенного поля используются агрегатные функции, например Min, Max, Sum, First, и Last
В этом разделе предполагается, что вы управляете мероприятием — проводите промежуточное мероприятие, освещение, питание и другие аспекты крупных функций. Кроме того, управляемые вами события могут попадать в несколько категорий, например мероприятий по запуску продукции, уличных ярлам и концертам. В этом разделе объясняется, как ответить на распространенный вопрос: когда будет следующее событие по категориям? Другими словами, когда будет следующий выпуск продукта, следующий концерт и так далее.
В процессе работы помните следующее: по умолчанию итоговые запросы, которые будут здесь созданы, могут включать только поля, содержащие данные группы или категории, и поля с датами. В запросы не должны включаться другие поля, которые описывают элементы в составе категории, например имена клиентов или поставщиков. Однако вы можете создать второй запрос, в котором будут содержаться итоговые запросы и поля с описательными данными. Ниже в этом разделе будет показано, как выполнить эту задачу.
Инструкции в данном разделе предполагают использование следующих трех таблиц:
Источник
Пусть имеется диапазон с датами. Найдем дату из этого диапазона, которая является ближайшей к заданной. Решение этой задачи аналогично решению, изложенного в статье
Поиск ЧИСЛА ближайшего к заданному
.
Пусть в диапазоне
A4:A12
имеется список дат. Будем в нем искать дату из ячейки
С4
. Если диапазон не содержит искомого значения, то будет возвращено ближайшее значение.
Искомая дата необязательно должна совпадать с какой-нибудь датой или даже находиться в диапазоне поиска (см.
Файл примера
):
|
|
|
|
|
=
= |
ищется наибольшее значение, которое меньше, чем искомое значение (если искомая дата меньше, чем минимальное значение из диапазона, то будет возвращена ошибка #Н/Д) |
если столбец не отсортирован по возрастанию, то результат непредсказуем |
|
= |
ищется |
столбец м.б. не отсортирован |
|
= |
ищется |
столбец м.б. не отсортирован |
|
= |
ищется |
столбец м.б. не отсортирован |
|
= |
ищется |
столбец м.б. не отсортирован |
|
= |
ищется |
столбец м.б. не отсортирован |
Последние 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 хранит дату и время
), то формулы для поиска ближайшего числа также будут работать для дат (см. раздел
Ближайшее ЧИСЛО
).




















