Поиск по времени excel

Perform a lookup on dates and times in Excel: vlookup, hlookup, index/match, any kind of lookup.

This tutorial shows you how to accurately use a lookup function on dates/times. This is important because time can be very tricky in Excel and sometimes you get positive results mixed-in with hidden negative results.

The VLOOKUP() function will be used as the example but the important steps are the same for any lookup function or formula.

Sections:

Date/Time Lookup Problem

Steps to fix a Date/Time Lookup

Notes

Date/Time Lookup Problem

The problem is that dates and times in excel are stored as numbers and times are the decimal part of the number. (format any date as General to see this)

Since times are stored as decimals, it is easy to miss an error in them and, in fact, a couple numbers can be off and you will still get a time that looks like it should when you format it as a date.

Here are some examples:

Both dates/times look the same:

Change the format to General so we can see their number equivalents:

They still look the same!!!

Now, show a few more decimal places:

You can see they are not the same!

After the 8 in the first one, there is a zero, but there is a 3 after the 8 in the second one.

This is what causes very frustrating problems when performing lookups on dates/times and this is the problem that needs to be fixed.

Steps to fix a Date/Time Lookup

To make times work in lookups, we need to round them.

  1. Insert a new column to the left of the dates/times.
  2. Input =ROUND(B1,5) into cell A1:

    B1 is the starting cell for the list of dates.
  3. Copy the formula down by selecting the first cell, A1 and double-clicking the quick-fill handle in the lower right hand of the cell.
  4. Copy the new data.
  5. Select all of the old data and then hit Alt + E + S + V and Enter (it’s called paste special — values). Now, your old data will have been replaced with the new data and it will have been rounded to the 5th digit after the decimal point.
    Then, delete the new column that you created with the ROUND() function.
    This means that the date and time that you see will actually be the date and time that is stored.
    But, we aren’t done yet!
  6. The Vlookup function, or whichever lookup function you use, now needs to be adjusted to work with the rounded numbers.
    Enter a normal Vlookup function BUT put ROUND(lookup_value,5) in for the lookup_value argument.

    The ROUND part has been highlighted for you.
    Without the ROUND function, the VLOOKUP function would have looked like this, with only D4 in for the lookup_value:

    However, you must include the ROUND function or this will not work since we already rounded the date/time values in our list.
  7. Now you have a working lookup on a table of dates and times.

If you want to test out the Vlookup with and without the ROUND function, try it on the 10:34 time; without ROUND, it returns «value 4» and with it, it returns «value 5».

Notes

Dates and times in Excel are often tricky to deal with. This tutorial focuses on cleaning date/time data so that you can use it in lookups. If you type all of your dates and times in Excel by hand, you probably won’t need this tutorial; however, if you import lots of date/time data into Excel, this tutorial will be a life-saver!

Download the sample file attached to this tutorial to see the examples in Excel.

Similar Content on TeachExcel

Convert Time to Minutes and Vice Versa in Excel

Tutorial: How to convert a time into minutes in Excel and also how to get minutes back into a time f…

Understanding Formulas and Functions in Excel

Tutorial: In this tutorial I will cover the basic concepts of Formulas and Functions in Excel.
A for…

Calculate the Difference Between Two Times in Excel

Tutorial:
Here, youll learn how to get the difference between two times in Excel.

A common example…

How to Resize Rows and Columns in Excel Quickly

Tutorial: Resizing rows and columns in Excel is an easy process. Simply left click in between the co…

How to Input, Edit, and manage Formulas and Functions in Excel

Tutorial: In this tutorial I am going to introduce how to input, edit and manage excel formulas. To …

Get the Number(s) Out of a Cell that Contains Both Text and Numbers in Excel — UDF

Macro: This free Excel UDF allows you to get the numbers out of a cell that contain both text…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фамилия

Имя

Адрес

Город

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

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

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

Авдеев

Григорий

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

Москва

РФ

05-фев-1968

10-июн-1994

Кузнецов

Артем

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

Пермь

РФ

22-май-1957

22-ноя-1996

Дегтярев

Дмитрий

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

Красноярск

РФ

11-ноя-1960

11-мар-2000

Зуева

Ольга

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

Тверь

РФ

22-мар-1964

22-июн-1998

Белых

Николай

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

Москва

РФ

05-июн-1972

05-янв-2002

Комарова

Лина

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

Красноярск

РФ

23-янв-1970

23-апр-1999

Зайцев

Сергей

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

Омск

РФ

14-апр-1964

14-окт-2004

Ермолаева

Анна

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

Иркутск

РФ

29-окт-1959

29-мар-1997

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

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

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

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

    -или-

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Фамилия

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

Белых

26.09.1968

Бутусов

02.10.1970

Измайлов

15.10.1965

Быков

15.10.1969

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

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

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

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

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

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

Продавец

12.11.2004

Ковалев

12.11.2004

Маслов

12.10.2004

Попов

12.10.2004

Попов

12.10.2004

Ковалев

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

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

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

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

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

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

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

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

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

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

КодТипа

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

1

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

2

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

3

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

4

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

5

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

6

Лекция

7

Концерт

8

Выставка

9

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

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

КодКлиента

Компания

Контакт

1

Contoso, Ltd. НИИ

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

2

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

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

3

Fabrikam

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

4

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

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

5

А. Datum

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

6

Adventure Works

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

7

железа

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

8

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

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

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

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

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

Клиент

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

Цена

1

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

Contoso, Ltd.

14.04.2003

10 000 ₽

2

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

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

21.04.2003

8000 ₽

3

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

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

01.05.2003

25000 ₽

4

Выставка

НИИ железа

13.05.2003

4 500 ₽

5

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

Contoso, Ltd.

14.05.2003

55 000 ₽

6

Концерт

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

23.05.2003

12 000 ₽

7

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

А. Datum

01.06.2003

15 000 ₽

8

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

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

18.06.2003

21 000 ₽

9

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

Adventure Works

22.06.2003

1300 ₽

10

Лекция

НИИ железа

25.06.2003

2450 ₽

11

Лекция

Contoso, Ltd.

04.07.2003

3800 ₽

12

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

НИИ железа

04.07.2003

5500 ₽

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

.

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

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

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

В ячейках

А21

и

В21

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

В ячейке

С21

введем

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

:

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

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

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

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


Примечание

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

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

.

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

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

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

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

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

Табл2.1

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

.

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

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

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

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

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

В ячейках

А25

и

В25

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поиск значения по двум критериям и диапазону дат

Салим

Дата: Среда, 21.01.2015, 18:54 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день.

Помогите с разрешением задачи.

Задача:
Есть таблица с данными:
Таблица 1
Наименование Значение период
Слива В 01-10.01.2015
Груша В 01-10.01.2015
Яблоко В 01-10.01.2015
Слива А 11-20.01.2015
Груша А 11-20.01.2015
Яблоко А 11-20.01.2015

В данной таблице одно и тоже наименование, но в разные периоды имеет разное значение

Необходимо что бы во второй таблице

Таблица 2
Наименование Дата Значение
Слива 05.01.2015
Яблоко 15.01.2015

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

Спасибо.

Сообщение отредактировал СалимСреда, 21.01.2015, 18:59

 

Ответить

Pelena

Дата: Среда, 21.01.2015, 20:05 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Салим, название темы ни о чём, придумайте что-нибудь более конкретное.


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Салим

Дата: Пятница, 23.01.2015, 14:18 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день.

Палена, Вы лучше бы решение подсказали, а название темы не главное.

Но в прочем решение найдено.

Спасибо всем кто просматривал)))

 

Ответить

VEKTORVSFREEMAN

Дата: Пятница, 23.01.2015, 14:25 |
Сообщение № 4

Группа: Друзья

Ранг: Ветеран

Сообщений: 772


Репутация:

129

±

Замечаний:
0% ±


MS Office Excel 2010

Салим, здравствуйте!
Если обращаетесь к человеку, то особое внимание уделите правильности написания его Имени или НИКнейма.
Уважаемая Pelena является модератором форума, а замечания модераторов не обсуждаются.
Вы правила форума читали? Название темы это не просто так.
Елену полностью поддерживаю. Название темы не о чем!


«Опыт — это то, что получаешь, не получив того, что хотел»

Сообщение отредактировал VEKTORVSFREEMANПятница, 23.01.2015, 14:27

 

Ответить

Салим

Дата: Пятница, 23.01.2015, 14:31 |
Сообщение № 5

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Добрый день, VEKTORVSFREEMAN.

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

То что Вы поддерживаете пользователя/модератора Pelena Ваше личное дело.

 

Ответить

Pelena

Дата: Пятница, 23.01.2015, 14:31 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

[offtop]
Спасибо, что не Полено :D [/offtop]

Салим, а решением поделиться не хотите? Для будущих поколений, так сказать


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Салим

Дата: Пятница, 23.01.2015, 14:35 |
Сообщение № 7

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Pelena добрый день.

За ошибку в конечно «пардонте» без злого умысла.

Решение выложу ну чуть позже.

Так как сам пример сделан для простого понимание, а сама задача являлась одной из составляющих длинного расчета.

 

Ответить

VEKTORVSFREEMAN

Дата: Пятница, 23.01.2015, 14:38 |
Сообщение № 8

Группа: Друзья

Ранг: Ветеран

Сообщений: 772


Репутация:

129

±

Замечаний:
0% ±


MS Office Excel 2010

Салим, я подразумеваю, что вы попали на это ресурс через поисковик?
Так вот, что бы другие люди могли найти решение своей проблемы схожей с вашей, то конкретное название Вашей темы увеличит их шансы. Для этого и существует этот форум.
Если относится ко всему так как понимают свои проблемы люди задающие вопросы, то этот ресурс http://www.excelworld.ru не был бы одним из самых лучших.


«Опыт — это то, что получаешь, не получив того, что хотел»

 

Ответить

Салим

Дата: Пятница, 23.01.2015, 14:48 |
Сообщение № 9

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

VEKTORVSFREEMAN, неправильно понимаете.

Еще раз повторюсь, что каждый человек/пользователь задаёт вопрос по своему.

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

 

Ответить

VEKTORVSFREEMAN

Дата: Пятница, 23.01.2015, 14:51 |
Сообщение № 10

Группа: Друзья

Ранг: Ветеран

Сообщений: 772


Репутация:

129

±

Замечаний:
0% ±


MS Office Excel 2010

[offtop] … [/offtop]


«Опыт — это то, что получаешь, не получив того, что хотел»

 

Ответить

Салим

Дата: Пятница, 23.01.2015, 14:51 |
Сообщение № 11

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Как и обещал решение.

Возможно само решение чопорное и можно придумать что лучше, но меня устроило.

Может кому нить поможет, кто забредет в данный топ.

Решение:
1. В столбце А я создал уникальный порядковый № для каждого наименования
2. функция «Если» и «ВПР» вам в помощь

 

Ответить

Pelena

Дата: Пятница, 23.01.2015, 15:07 |
Сообщение № 12

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Выложу свой вариант с формулой массива. На больших объёмах будет медленнее работать, чем Ваш.

Да, и название темы изменила, раз уж решение есть


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Салим

Дата: Пятница, 23.01.2015, 15:59 |
Сообщение № 13

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Pelena не соглашусь с Вашим решением.

Так как если в таблице 2 на против значения «Слива» установить дату превышающую имеющиеся диапазоны например 23.01.2015г то значение будет отображаться не по последнему периоду. Что на мой взгляд не совсем корректно.

 

Ответить

Pelena

Дата: Пятница, 23.01.2015, 16:14 |
Сообщение № 14

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

А в примере такого не было


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

jakim

Дата: Пятница, 23.01.2015, 16:51 |
Сообщение № 15

Группа: Друзья

Ранг: Старожил

Сообщений: 1150


Репутация:

305

±

Замечаний:
0% ±


Excel 2010

А если так?

К сообщению приложен файл:

1705565.xlsx
(10.3 Kb)

 

Ответить

Салим

Дата: Пятница, 23.01.2015, 17:12 |
Сообщение № 16

Группа: Пользователи

Ранг: Прохожий

Сообщений: 9


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Pelena,

Согласен, в изначальных условиях Я данный момент пропустил. Спасибо за решение.

jakim, добрый день.

В вашем примере так же не учтено что дата в таблице № 2 может превышать имеющиеся диапазоны указанные в таблице № 1. Т.е. если в таблице 2 напротив «сливы указано дата превышающий диапазон, то выдает ошибку. Но это скорее моя ошибка так как изначально не заложил в условиях.

З.Ы. нужно учить формулы массивов (((

Спасибо.

 

Ответить

Всем привет!

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

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

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

Какую формулу нужно применять в каждом из вариантов?

Пожалуйста, помогите разобраться с проблемой.

Понравилась статья? Поделить с друзьями:
  • Поиск по вертикали excel
  • Поиск по артикулу excel
  • Поиск по английски excel
  • Поиск по word документам в проводнике
  • Поиск первой непустой ячейки vba excel