Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше
Для извлечения данных из внешних источников можно использовать приложение Microsoft Query. Используя Microsoft Query для извлечения данных из корпоративных баз данных и файлов, не нужно повторно вводить данные, которые нужно проанализировать в Excel. Кроме того, вы Excel отчеты и сводные данные из исходной исходной базы данных при обновлении новой информации.
С помощью Microsoft Query можно подключаться к внешним источникам данных, выбирать данные из них, импортировать их на свой сайт и обновлять данные, чтобы данные на вашем компьютере всегда были синхронизированы с данными во внешних источниках.
Типы баз данных, к которые можно получить доступ Вы можете извлекать данные из баз данных нескольких типов, включая Microsoft Office Access, Microsoft SQL Server и Microsoft SQL Server OLAP Services. Вы также можете получать данные из Excel книг и текстовых файлов.
Microsoft Office драйверы, которые можно использовать для получения данных из следующих источников:
-
Microsoft SQL Server Analysis Services (поставщик OLAP )
-
Microsoft Office Доступа
-
dBASE
-
Microsoft FoxPro
-
Microsoft Office Excel
-
Oracle
-
Парадокс
-
Базы данных текстовых файлов
Вы также можете использовать драйверы ODBC или драйверы источников данных других производителей для извлечения информации из источников данных, которые здесь не указаны, включая другие типы баз данных OLAP. Чтобы получить сведения об установке драйвера ODBC или драйвера источника данных, который здесь не указан, проверьте документацию к базе данных или обратитесь к поставщику базы данных.
Выбор данных из базы данных Чтобы получить данные из базы данных, создайте запрос ( вопрос о данных, хранимых во внешней базе данных). Например, если данные хранятся в базе данных Access, может потребоваться узнать данные о продажах для определенного продукта по регионам. Вы можете получить часть данных, выбрав только данные для продукта и региона, которые вы хотите проанализировать.
С помощью Microsoft Query можно выбрать нужные столбцы данных и импортировать только эти данные в Excel.
Обновление таблицы за одну операцию После того как в книге Excel есть внешние данные, при внесении изменений в базу данных вы можете обновить данные для обновления анализа, не создав снова сводные отчеты и диаграммы. Например, вы можете создать сводку продаж за месяц и обновлять ее каждый месяц, когда будут приходить новые показатели продаж.
Использование источников данных в Microsoft Query После того как вы настроили источник данных для конкретной базы данных, вы можете использовать его в любой момент, когда захотите создать запрос для выбора и извлечения данных из этой базы данных, не вводить все данные подключения повторно. Microsoft Query использует источник данных для подключения к внешней базе данных и для демонстрации доступных данных. После создания запроса и возврата данных в Excel, Microsoft Query предоставляет книге Excel данные как с запросом, так и с источником данных, чтобы можно было повторно подключиться к базе данных при обновлении данных.
Импорт данных с помощью Microsoft Query чтобы импортировать внешние данные в Excel с помощью Microsoft Query, выполните основные действия, описанные в следующих разделах более подробно.
Что такое источник данных? Источник данных — это хранимый набор сведений, позволяющий Excel и Microsoft Query подключаться к внешней базе данных. При использовании Microsoft Query для работы с источником данных вы даете источнику данных имя, а затем ука вашему имени и расположению базы данных или сервера, тип базы данных, а также сведения о вашем учете и пароле. Эти сведения также включают имя драйвера OBDC или драйвера источника данных — программы, которая создает подключения к базе данных определенного типа.
Чтобы настроить источник данных с помощью Microsoft Query:
-
На вкладке Данные в группе Внешние данные нажмите кнопку Из другихисточников и выберите из Microsoft Query.
-
Выполните одно из указанных ниже действий.
-
Чтобы указать источник данных для базы данных, текстового файла или Excel книги, перейдите на вкладку Базы данных.
-
Чтобы указать источник данных куба OLAP, перейдите на вкладку Куба OLAP. Эта вкладка доступна, только если вы запустили Microsoft Query из Excel.
-
-
Дважды щелкните <новый источник данных>.
ИЛИ
Щелкните <новый источник>и нажмите кнопку ОК.
Отобразилось диалоговое окно Создание источника данных.
-
На шаге 1 введите имя для определения источника данных.
-
На шаге 2 выберите драйвер для типа базы данных, используемой в качестве источника данных.
Примечания:
-
Если внешняя база данных, к которой вы хотите получить доступ, не поддерживается драйверами ODBC, установленными с помощью Microsoft Query, необходимо получить и установить драйвер ODBC, совместимый с Microsoft Office, у стороного поставщика, например производителя базы данных. За инструкциями по установке обратитесь к поставщику базы данных.
-
Для баз данных OLAP драйверы ODBC не требуются. При установке Microsoft Query драйверы устанавливаются для баз данных, созданных с Microsoft SQL Server Analysis Services. Чтобы подключиться к другим базам данных OLAP, необходимо установить драйвер источника данных и клиентское программное обеспечение.
-
-
Щелкните Подключение, а затем укажете сведения, необходимые для подключения к источнику данных. Для баз данных, Excel книг и текстовых файлов предоставляемая информация зависит от типа выбранного источника данных. Вам может быть предложено ввести имя для логотипа, пароль, версию используемой базы данных, расположение базы данных или другую информацию, определенную для ее типа.
Важно:
-
Используйте надежные пароли, состоящие из букв в верхнем и нижнем регистре, цифр и символов. В ненадежных паролях не используются сочетания таких элементов. Надежный пароль: Y6dh!et5. Ненадежный пароль: House27. Пароль должен состоять не менее чем из 8 знаков. Лучше всего использовать парольную фразу длиной не менее 14 знаков.
-
Очень важно запомнить свой пароль. Если вы забудете пароль, корпорация Майкрософт не сможет его восстановить. Все записанные пароли следует хранить в надежном месте отдельно от сведений, для защиты которых они предназначены.
-
-
После ввода необходимых сведений нажмите кнопку ОК или Готово, чтобы вернуться в диалоговое окно Создание источника данных.
-
Если в базе данных есть таблицы и вы хотите, чтобы определенная таблица автоматически отображалась в мастере запросов, щелкните поле для шага 4 и выберите таблицу.
-
Если вы не хотите вводить имя пользователя и пароль при использовании источника данных, в определении источника данных выберите сохранить имя пользователя и пароль. Сохраненный пароль не шифруется. Если этот параметр недоступен, обратитесь к администратору базы данных, чтобы определить, можно ли сделать этот параметр доступным.
Примечание по безопасности: Не рекомендуется сохранять сведения о входе при подключении к источникам данных. Эта информация может храниться в виде обычного текста, и злоумышленники смогут получить с ее помощью доступ к источнику данных.
После выполнения этих действий имя источника данных появится в диалоговом окне Выбор источника данных.
Использование мастера запросов для большинства запросов Мастер запросов упрощает выбор и сбор данных из разных таблиц и полей базы данных. С помощью мастера запросов можно выбрать таблицы и поля, которые вы хотите включить. Внутреннее объединить (операция запроса, которая определяет, что строки из двух таблиц объединяются на основе одинаковых значений полей) создается автоматически, когда мастер распознает поле первичного ключа в одной таблице и поле с одинаковым именем во второй таблице.
Мастер также можно использовать для сортировки набора результатов и простой фильтрации. На завершаемом этапе мастера можно вернуть данные в Excel или уточнить запрос в Microsoft Query. После создания запроса его можно запустить в Excel или в Microsoft Query.
Чтобы запустить мастер запросов, выполните следующие действия:
-
На вкладке Данные в группе Внешние данные нажмите кнопку Из другихисточников и выберите из Microsoft Query.
-
Убедитесь в том, что в диалоговом окне Выбор источника данных был выбран вариант Использовать мастер запросов для создания и изменения запросов.
-
Дважды щелкните нужный источник данных.
ИЛИ
Выберите нужный источник данных и нажмите кнопку ОК.
Работа с другими типами запросов непосредственно в Microsoft Query Если вы хотите создать более сложный запрос, чем позволяет мастер запросов, вы можете работать непосредственно в Microsoft Query. С помощью Microsoft Query можно просматривать и изменять запросы, которые создаются в мастере запросов, или создавать новые запросы без использования мастера. Работайте непосредственно в Microsoft Query, если вы хотите создать запросы, которые будут:
-
Выбор определенных данных из поля В большой базе данных может потребоваться выбрать часть данных в поле и опустить данные, которые вам не нужны. Например, если вам нужны данные для двух продуктов в поле, которое содержит сведения о многих товарах, можно использовать условия для выбора данных только для двух нужных продуктов.
-
Извлечение данных на основе различных критериев при каждом запуске запроса Если вам нужно создать один и тот же Excel отчет или сводку для нескольких областей в одном и том же внешнем данных , например для отдельного отчета о продажах для каждого региона, можно создать запрос с параметрами. При запуске запроса с параметрами запрашивается значение, которое будет применяться в качестве критерия при выборе записей. Например, запрос с параметрами может потребовать ввести определенный регион и повторно использовать его для создания каждого из региональных отчетов о продажах.
-
Различными способами для сбора данных Внутренние соединители, которые создает мастер запросов, являются наиболее распространенными типами, используемыми при создании запросов. Однако иногда необходимо использовать другой тип. Например, если у вас есть таблица сведений о продажах продуктов и таблица сведений о клиенте, внутреннее присоединиться (тип, созданный с помощью мастера запросов) предотвращает истощить записи клиентов, которые не сделали покупку. С помощью Microsoft Query вы можете объединить эти таблицы, чтобы получить все записи клиентов, а также данные о продажах для тех клиентов, которые сделали покупки.
Чтобы запустить Microsoft Query, выполните следующие действия:
-
На вкладке Данные в группе Внешние данные нажмите кнопку Из другихисточников и выберите из Microsoft Query.
-
В диалоговом окне Выбор источника данных убедитесь в том, что для создания и изменения запросов не заметен диалоговое окно Создание и изменение запросов с помощью мастера запросов.
-
Дважды щелкните нужный источник данных.
ИЛИ
Выберите нужный источник данных и нажмите кнопку ОК.
Повторное использование запросов и общий доступ Как в мастере запросов, так и в Microsoft Query можно сохранить запросы в качестве DQY-файла, который можно изменять, повторно использовать и совместно использовать. Excel можно открывать DQY-файлы напрямую, что позволяет создавать дополнительные диапазоны внешних данных из того же запроса.
Чтобы открыть сохраненный запрос из Excel:
-
На вкладке Данные в группе Внешние данные нажмите кнопку Из другихисточников и выберите из Microsoft Query. Отобразилось диалоговое окно Выбор источника данных.
-
В диалоговом окне Выбор источника данных перейдите на вкладку Запросы.
-
Дважды щелкните сохраненный запрос, который вы хотите открыть. Запрос отображается в Microsoft Query.
Если вы хотите открыть сохраненный запрос, а Microsoft Query уже открыт, откройте меню Файл запроса Майкрософт и нажмите кнопку Открыть.
Если дважды щелкнуть DQY-файл, Excel откроется, выполняется запрос, а затем вставляет результаты на новый.
Если вы хотите поделиться сводной Excel отчетом, основанным на внешних данных, вы можете предоставить другим пользователям книгу, содержаную диапазон внешних данных, или создать шаблон. Шаблон позволяет сохранить сводку или отчет без сохранения внешних данных, чтобы файл был меньше. Внешние данные извлекаются, когда пользователь открывает шаблон отчета.
После создания запроса в мастере запросов или Microsoft Query можно вернуть данные на Excel таблицу. После этого данные становятся диапазон внешних данных или отчет сводной таблицы, которые можно форматирование и обновление.
Форматирование полученных данных В Excel вы можете использовать инструменты, например диаграммы или автоматические итоги, для получения и обобщения данных, полученных с помощью Microsoft Query. При этом форматирование сохраняется при обновлении внешних данных. Вместо имен полей можно использовать собственные названия столбцов и автоматически добавлять номера строк.
Excel форматирование новых данных, которые вы введите в конце диапазона, в соответствие с предыдущими строками. Excel также можно автоматически копировать формулы, которые повторялись в предыдущих строках, и распространять их на дополнительные строки.
Примечание: Чтобы расширить диапазон на новые строки, форматы и формулы должны отображаться по крайней мере в трех из пяти предыдущих строк.
Вы можете включить этот параметр (или отключить его снова) в любое время:
-
Щелкните Файл > Параметры > Дополнительно.
В Excel 2007: нажмите кнопку Microsoft Office , Excel Параметры, а затем выберите категорию Дополнительные.
-
В разделе Параметры правки выберите параметр Расширить форматы диапазонов данных и формулы. Чтобы снова отключить автоматическое форматирование диапазона данных, сверните этот квадрат.
Обновление внешних данных. При обновлении внешних данных вы будете запускать запрос, чтобы получить все новые или измененные данные, которые будут совпадать с вашими спецификациями. Запрос можно обновить как в Microsoft Query, так и Excel. Excel предлагает несколько вариантов обновления запросов, включая обновление данных при ее открытие и автоматическое обновление через определенные промежутки времени. Вы можете продолжать работать в Excel во время обновления данных, а также проверять состояние во время обновления данных. Дополнительные сведения см. в этойExcel.
К началу страницы
Нужна дополнительная помощь?
Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel. [1]
Предыдущая глава Оглавление Следующая глава
Извлечение данных (записей) из таблицы, списка или базы данных
Извлечение данных из набора данных на основе критериев И, ИЛИ – типичная задача для Excel. Вы можете решить ее, используя один из следующих методов:
- Фильтр
- Расширенный фильтр
- Обычная формула в специально добавленном столбце
- Формула массива на основе функций НАИМЕНЬШИЙ и ИНДЕКС
- Формулу массива на основе функций АГРЕГАТ и ИНДЕКС
Рис. 15.1. Аккуратный набор данных
Скачать заметку в формате Word или pdf, примеры в формате Excel
Учитывайте следующие важные моменты в отношении этих методов:
- Фильтр и расширенный фильтр, как правило, легче использовать, чем формулы, но они не дают моментального обновления, в отличие от формул.
- Формулы обновляются моментально, как только в ячейке изменился критерий.
- Обычная формула в специально добавленном столбце работает быстрее формулы массива
- Мы не рассматриваем решения на основе кода VBA, хотя они могут быть весьма эффективными.
Использование Фильтра (Автофильтра) для извлечения данных
Опция Фильтр (также известная как Автофильтр) наиболее проста в использовании. Если у вас аккуратный набор данных с заголовками столбцов (рис. 15.1), вы можете включить фильтр, встав на любую ячейку области, и пройдя по меню ДАННЫЕ –> Фильтр, или нажав Ctrl+Shift+L. Теперь можно использовать стрелочки вверху каждого столбца для фильтрации данных. Как только набор данных фильтруется, можно выделить и скопировать видимые ячейки в другое место того же или нового листа (рис. 15.2–15.4), или в новую книгу.
На рис. 15.2 данные извлечены по следующим критериям: Дата >=01.06.12, Дата <=31.05.13, Регион = West. Для того чтобы выполнить фильтрацию:
- Щелкните стрелку на поле Дата, выберите Фильтр по дате –> Между…, введите или выберите из календаря требуемые даты.
- Щелкните стрелку на поле Регион и оставьте галку только напротив West.
Рис. 15.2. Результат фильтрации по трем И критериям
На рис. 15.3 показан результат извлечения записей по критерии ИЛИ: регион = West либо регион = Est.
Рис. 15.3. Результат фильтрации по ИЛИ критерию
На рис. 15.4 показаны записи, извлеченные с помощью нескольких И критериев и одного ИЛИ: Дата >=01.06.12 И Дата <=31.05.13 И (регион = West ИЛИ регион = Est). Обратите внимание, что ИЛИ критерий относится к одному и тому же столбцу.
Рис. 15.4 Результат фильтрации с тремя И критериями, где третий И критерий включает в себя ИЛИ
Если ИЛИ критерий должен относится к разным столбцам, опция Фильтр не поможет. Используйте вспомогательный столбец с формулой. Примените фильтр к вспомогательному столбцу, чтобы показать только значения ИСТИНА (рис. 15.5).
Рис. 15.5 Вспомогательный столбец помогает отфильтровать по критерию ИЛИ, относящемуся к двум столбцам
Эти примеры показывают, насколько легко и быстро можно применить опцию Фильтр. Если вам не нужно мгновенное обновление извлеченных данных при смени критериев отбора, Фильтр является предпочтительным инструментом.
Использование Расширенного фильтра для извлечения записей
Расширенный фильтр в отличии от Фильтра требует введения критериев в ячейки. Кроме того, вы должны использовать диалоговое окно, вместо выпадающих меню в верхней части каждого столбца для фильтрации данных. Расширенный фильтр также может выполнить несколько задач, которые не под силу Фильтру.
Чтобы применить Расширенный фильтр:
- Для Расширенного фильтра, столбцы должны быть озаглавлены, а область критериев – содержать те же заголовки и сами критерии. При этом, И критерии должны располагаться в одной строке, а ИЛИ критерии – в различных (рис. 15.6-а).
- Чтобы открыть диалоговое окно Расширенный фильтр, пройдите по меню ДАННЫЕ –> Сортировка и фильтр –> Дополнительно, или нажмите Alt, и не отпуская нажмите последовательно Ы, Л
- Заполните диалоговое окно Расширенный фильтр, как показано на рис. 15.6-б.
- Кликните Ok. Имена полей и записи извлекаются, и записываются в указанное место. При это создаются два имени, которые можно увидеть в Диспетчере имен. Последний можно открыть, нажав Ctrl+F3 (рис. 15.6-в). Благодаря созданию имен, при последующих запусках диалогового окна Расширенный фильтр, параметры сохраняются. Поэтому вы можете просто изменить критерии и повторно запустить Расширенный фильтр.
- Если вы хотите сохранить предыдущие результаты, при каждом новом запуске Расширенного фильтра просто измените ячейку в поле Поместить результат в диапазон.
Рис. 15.6. Расширенный фильтр для извлечения данных с И критериями; при запуске Расширенного фильтра определяются два имени: Извлечь, Критерии
На рис. 15.8–15.12 приведены примеры использования Расширенного фильтра.
Рис. 15.7. Расширенный фильтр для извлечения данных с ИЛИ критерием
Рис. 15.8. Расширенный фильтр для извлечения данных с И и ИЛИ критериями; ИЛИ критерий применен к одному столбцу
Рис. 15.9. Расширенный фильтр для извлечения данных с И и ИЛИ критериями; ИЛИ критерий применен к двум столбцам
Рис. 15.10. Расширенный фильтр может использовать логические формулы в качестве критерия. Обратите внимание, что критерии в поле Диапазон условий указан В6:В7. Обычно этот диапазон включает в себя имя поля из набора данных и критерий. Но только не в этом случае. Используя логическую формулу, ячейку В6 следует оставить пустой или поместить текст, не совпадающий ни с одним из имен полей. В ячейке В7 следует разместить логическую формулу. Это пример извлекает те же данные, как и на рис. 15.9.
Рис. 15.11. Если вы хотите извлечь уникальный список из одного столбца, вы можете это сделать с помощью Расширенного фильтра. Отметьте флажок Только уникальные записи. Этот трюк всегда требует, чтобы, во-первых, имя поля было включены в Исходный диапазон, и во-вторых, чтобы имя извлекаемых данных (ячейка F3) называлось также. Поэкспериментируйте с извлечением уникальных регионов.
Примеры показывают, что Расширенный фильтр дает вам больше возможностей фильтрации чем Фильтр:
- Вы можете видеть критерии в ячейках (в Фильтре они скрываются за выпадающими стрелками Автофильтра).
- Вы можете обрабатывать сложные И и ИЛИ критерии.
- Вы можете использовать формулы в качестве критерия.
- Вы можете получить уникальный список.
Фильтр и Расширенный фильтр очень просты в использовании, и будут использоваться довольно часто. Но иногда требуется немедленное обновление формул. К сожалению, за оперативность приходится расплачиваться сложностью.
Формулы для извлечения записей
При извлечении данных из таблицы, вы фактически осуществляете поиск. Стандартные функции поиска в Excel, такие как ИНДЕКС, ПОИСКПОЗ и ВПР прекрасно себя зарекомендовали, но они не справляются с дублями. Как показано на рис. 15.12, если цель состоит в извлечении записей по трем критериям, итогом должны стать две выделенные записи. Для вертикальной таблицы, формулы подстановки легко извлекают данные из нескольких столбцов; но не справляются с извлечением данных из нескольких строк.
Если вам нужна формула, чтобы извлечь записи, у вас есть два основных варианта:
- Использовать стандартную функцию поиска на основе вспомогательного столбца. Последний содержит формулу, которая, например, выдает числа: 1, 2, 3, … для «правильных» записей. Как только критерии поменяются, формула тут же отработает изменения, и снова находит записи, соответствующие критериям. Эти последовательные цифры решают проблему дублей, потому что есть уникальный идентификатор для каждой найденной записи. Вспомогательный столбец служит в качестве столбца подстановки, что позволяет стандартным функциям поиска выполнять свою работу.
- Использовать формулы массива на основе полного набора данных. Эти формулы являются автономными и не требуют дополнительного столбца. Для этих формул, вы должны создать внутри формулы массив относительных позиций для записей, которые соответствуют критериям. Эти формулы позволяют извлекать записи при наличии дублей.
Рис. 15.12. Должны быть извлечены две записи; стандартные функции поиска замучаются с дублями (строки раскрашены с помощью условного форматирования, что можно подробнее изучить на соответствующем листе приложенного Excel-файла)
Использование вспомогательного столбца, И критерия и функций ИНДЕКС / ПОИСКПОЗ
На рис. 15.13 представлены три критерия, собранные во вспомогательном столбце с помощью функции И. Этот столбец будет служить в качестве столбца подстановки для функции ИНДЕКС.
Рис. 15.13. Первая часть формулы вспомогательного столбца включает функцию И; чтобы увеличить картинку, кликните на ней правой кнопкой мыши и выберите опцию Открыть картинку в новой вкладке
Проблема с использованием функции И заключается в том, что она возвращает лишь два значения: ИСТИНА и ЛОЖЬ. Т.е., вы вернулись к проблеме дублей в столбце подстановки. Вы бы хотели, чтобы первая ИСТИНА (в ячейке E14) имела номер 1, а вторая (в ячейке Е17) – номер 2. Этого можно достичь путем внесения изменений в формулу. Как показано на рис. 15.14, вы помещаете функцию И в качестве аргумента число1 функции СУММ, а в качестве аргумента число2 вы помещаете относительную ссылка на одну ячейку выше.
Рис. 15.14. Финальный вид формулы вспомогательного столбца
Вот как работает эта формула:
- Булевы (логические) значения ИСТИНА и ЛОЖЬ, возвращаемые функцией И, будут преобразованы соответственно в единицы и нули, внутри функции СУММ.
- Функция СУММ игнорирует текст, и поэтому относительная ссылка на ячейку Е7 в аргументе число2, обнаружив текст Вспомогательный, вернет ноль.
- Когда формула дойдет до ячейки E14, значение на одну ячейки выше будет 0, а значение в самой ячейке Е14 будет 1. Итого = 1.
- В ячейках E15 и E16, формула будет добавлять 0 к предыдущему значению, и по-прежнему возвращать 1.
- В ячейке E17, формула сложит 1 (из предыдущей ячейки) и 1 (ИСТИНА). Итого = 2.
- Дубли не составят проблемы при использовании стандартной функции поиска, т.к., вы можете задать Точное совпадение и, следовательно, все повторяющиеся значения кроме первого будут проигнорированы.
- Выполнив Точное совпадение, вы не только игнорируете дубли, вы также косвенно создаете столбец с уникальными идентификаторами: 1, 2 и т.д., который позволит функции ВПР извлечь нужные данные.
Вы можете добавить вспомогательную ячейку для подсчета общего числа записей, которые требуется извлечь (рис. 15.15). Это можно сделать, например, используя функцию МАКС в ячейке Н6. Вспомогательная ячейка добавляет наглядности и ускоряет работу Excel (если вы поместите фрагмент МАСК($Е$8:$Е$17) внутрь окончательной формулы поиска для извлечения данных, этот расчет будет выполняться много раз). Вы можете использовать вспомогательную ячейку (строку или столбец) всякий раз, когда у вас есть элемент формулы, многократно используемый в другой формуле.
Рис. 15.15. Ячейка Н6 с помощью функции МАКС вычисляет количество записей; это еще один пример вспомогательной ячейки
Вы можете начать основную формулу с функции ЕСЛИ (рис. 15.16). Поскольку формула должна предусматривать различное число извлекаемых записей, аргумент лог_выражение проверяет, не превышает ли номер записи (1 в ячейке $G12) общее число «правильных» записей в ячейке $Н$6. Если аргумент лог_выражение принимает значение ИСТИНА, в ячейку помещается пустая текстовая строка. Если лог_выражение принимает значение ЛОЖЬ, используется стандартная функция поиска.
Рис. 15.16. Функция ЕСЛИ предпочтительнее для запуска формулы поиска, по сравнению с функцией ЕСЛИОШИБКА (первая функция работает быстрее; подробнее об этом см. Глава 9. Знакомство с функциями массива. ТРАНСП, МОДА.НСК и ТЕНДЕНЦИЯ)
На рис. 15.17 формула извлечения данных приведена в финальном виде. Обратите внимание:
- Диапазон изменения аргумента массив функции ИНДЕКС представлен смешанной ссылкой – А$8:A$17; заблокирована только ссылка на строки (представлена в виде абсолютной ссылки), что позволяет скопировать формулу право вдоль строки; формула в ячейке I12 будет ссылаться на диапазон В$8:В$17. А при копировании формулы вниз вдоль столбца ссылка заблокирована. Так что в ячейке Н13 формула по-прежнему будет ссылаться на диапазон А$8:A$17.
- Аргумент искомое_значение функции ПОИСКПОЗ содержит искомое значение – номер 1, в ячейке $G Аналогично, смешанная ссылка позволяет при копировании по строке сохранять ссылку на ячейку $G12, а при копировании по столбцу перейти к ссылке на ячейку $G13, то есть, перейти к номеру 2.
- Аргумент просматриваемый_массив функции ПОИСКПОЗ включает абсолютную ссылку, так что из любой ячейки мы обратимся к одному и тому же диапазону $E$8:$E$17.
- Аргумент тип_сопоставления функции ПОИСКПОЗ равен нулю, так что выполняется поиск точного совпадения.
Рис. 15.17. Окончательная формула поиска
Формула, введенная в ячейку Н12 копируется в диапазоне Н12:К17.
Примечание: когда вы копируете ячейку, копируются и формулы, и форматирование. Чтобы избежать копирования форматирования чисел, после копирования воспользуйтесь опцией смарт-тега Заполнить только значения:
Вы скопировали формулу вниз до строки 17. Но как далеко вниз вы должны скопировать формулу извлечения данных? Скопируйте с запасом, чтобы предусмотреть потенциально большое число извлеченных записей.
Рис. 15.18 показывает, в чем прелесть использования формул вместо Фильтра или Расширенного фильтра: при изменении критериев (дат), формулы отработали мгновенно. Рис. 5.19 показывает, как можно изменить формулу, если вы не хотите использовать столбец номеров (G). Дважды замените ссылку $G12 на фрагмент ЧСТРОК(H$12:H12).
Рис. 15.18. При изменении критериев формулы отработали мгновенно
Рис. 15.19. Эта формула будет работать без столбца с номерами
В следующих разделах мы рассмотрим еще три примера того, как использовать вспомогательные столбцы для извлечения данных.
Использование вспомогательного столбца, ИЛИ критерия и ВПР в качестве функции поиска
На рис. 15.20 вспомогательный столбец расположен первым, так что вы можете использовать функцию ВПР. Обратите внимание на использование функции ЧИСЛОСТОЛБ в аргументе номер_столбца функция ВПР для увеличения номера 1, 2, 3, …, при копировании формулы вправо вдоль строки.
Рис. 15.20. Использование вспомогательного столбца, ИЛИ критерия и ВПР в качестве функции поиска; формула в ячейке G10 показана в строке формул
Примечание: если все критерии ИЛИ расположены в одном столбце (в примере выше – в столбце В, в диапазоне В3:В4), вы можете использовать одну из двух конструкций: (1) функции ЕЧИСЛО + ПОИСКПОЗ; (2) функцию ИЛИ. Если критериев больше двух, первый вариант предпочтительнее. Если критериев ровна два, второй вариант может быть более наглядным. Во втором случае формула в А10 имеет вид:
=СУММ(ИЛИ(D10=$B$3;D10=$B$4);А9)
Использование вспомогательного столбца, критериев И и ИЛИ, функций ИНДЕКС и ПОИСКПОЗ для извлечения части столбцов данных
На рис. 15.21 показан пример использования вспомогательного столбца для извлечения данных из столбцов Дата и Штуки. Заметьте, что функция ИНДЕКС выполняет поиск (с помощью функции ПОИСКПОЗ), как по строкам, так и по столбцам.
Рис. 15.21. Критерии И и ИЛИ, в двух-координатном поиске для извлечения части столбцов по их названию; формула в ячейке G10 показана в строке формул
Использование вспомогательного столбца, критериев И и ИЛИ для извлечения данных и представления их в горизонтальном виде
На рис. 15.22 показано, как преодолеть несоответствие между текстовым названием месяца, как критерия (ячейка С3), и порядковым номером даты в поле Дата (например, в ячейке А10 хранится значение 41484). Также показано, что данные могут быть извлечены из вертикальной таблицы и отображаться горизонтально. Это выполняется с помощью функции ЧИСЛСТОЛБ в аргументе лог_выражение функции ЕСЛИ и в аргументе искомое_значение функции ПОИСКПОЗ.
Рис. 15.22. Критерии И и ИЛИ, и несоответствие между текстовым названием месяца, как критерия, и порядковым номером даты в поле Дата. Данные извлекаются из вертикальной таблицы и отображается горизонтально с помощью двух-координатного поиска и функции ЧИСЛСТОЛБ. Формула в ячейке G10 показана в строке формул
Мы рассмотрели, как применять вспомогательные столбцы. Однако, если вспомогательные столбцы не могут быть использованы, нужно переходить к формулам массива.
Создание массива относительных позиций отобранных записей внутри формулы
Извлечение данных с помощью формулы массива основано на создании массива относительных позиций отобранных записей внутри формулы. На рис. 15.23 видно, что на основе критериев И установлено соответствие записей критериям в относительных позициях 7 и 10 (внутри 10 строк массива данных; выделены желтым). Поскольку вы не можете использовать вспомогательный столбец, вы должны рассчитать эти номера 7 и 10 внутри формулы. Затем номера 7 и 10 будут использованы в аргументе номер_строки функции ИНДЕКС. Ранее, вы уже сталкивались с элементами, необходимыми для создания относительной позиции внутри массива:
- В главах 4 и 11 вы узнали об использовании Булевой алгебры и функции ЕСЛИ для фильтрации элементов внутри формулы (см. Глава 4. Сравнение массивов и выборки по одному или нескольким условиям и Глава 11. Булева логика: критерии И, ИЛИ).
- В главе 8 вы узнали о фрагменте формулы, который создает массив последовательных чисел, или относительных позиций: СТРОКА(диапазон) – СТРОКА(первая_ячейка_в_ диапазоне) + 1 (см. Глава 8. Формулы массива, возвращающие более одного значения).
Если вы используете Excel 2007 или более раннюю версию, вы можете создать массив с помощью функций НАИМЕНЬШИЙ и ЕСЛИ, что потребует нажатия Ctrl+Shift+Enter для ввода формулы. Если вы используете Excel 2010 или более позднюю версию, вы можете использовать функцию АГРЕГАТ и логическое деление, а значит формула не потребует нажатия Ctrl+Shift+Enter.
Рис. 15.23. Искомые записи находятся в относительных позициях 7 и 10
Формулы массива для извлечения данных с И критерием и функциями НАИМЕНЬШИЙ, ЕСЛИ, ИНДЕКС
Как показано на рис. 15.24, вы начинаете написание формулы в ячейке F12 с трех функций ЕСЛИ (вложенных друг в друга) в аргументе массив функции НАИМЕНЬШИЙ. Аргументы лог_выражение трех функций ЕСЛИ являются фильтром для отбора относительно позиций строк, отвечающих всем критериям. Как показано на рис. 15.25, вы помещаете элемент формулы для создания массива относительных позиций отобранных записей в аргумент значение_если_истина функции ЕСЛИ и затем закрываете три ЕСЛИ тремя закрывающими скобками, оставляя все аргументы значение_если_ложь пустыми.
Примечание: элемент формулы для создания массива относительных позиций, может использовать любой из столбцов в наборе данных. В нашем примере используется столбец Дата: СТРОКА($A$11:$A$20)-СТРОКА($A$11)+1 – но вы так же можете использовать столбец Регион, Клиент или Штук. Например, СТРОКА($В$11:$В$20)-СТРОКА($В$11)+1.
Рис. 15.24. Три ЕСЛИ внутри функции НАИМЕНЬШИЙ, чтобы обработать три критерия
Рис. 15.25. Элемент формулы для создания массива относительных позиций отобранных записей располагается в аргументе значение_если_истина функции ЕСЛИ
Если, находясь в ячейке F12, вы в строке формул кликните внутри функции НАИМЕНЬШИЙ, то появится подсказка НАИМЕНЬШИЙ(массив; k). Если теперь кликнуть на первом аргументе функции – массив, то выделится весь первый аргумент (рис. 15.26 а). Нажмите F9, и вы увидите значения массива относительных позиций отобранных записей на фоне значений ЛОЖЬ (рис. 15.26 б). Чтобы отменить перевод формулы в значения, нажмите Ctrl+Z.
Рис. 15.26. Выделите фрагмент формулы, нажмите F9 и вы увидите значения массива относительных позиций отобранных записей на фоне значений ЛОЖЬ
Зачем мы помещаем массив относительных позиций отобранных записей внутрь функции НАИМЕНЬШИЙ? Дело в том, что НАИМЕНЬШИЙ извлекает сначала 7, а затем 10, а скопировав формулу вниз по столбцу, можно подставить эти цифры в аргумент номер_строки функции ИНДЕКС. Когда мы помещаем нумератор ЧСТРОК(F$12:F12) в аргумент k (рис. 15.27), функция НАИМЕНЬШИЙ возвращает правильное относительное положение в аргумент номер_строки функции ИНДЕКС. Не забудьте, что для ввода этой формулы (точнее фрагмента) требуется нажать Ctrl+Shift+Enter. Результат копирования этой формулы в диапазон F12:I17 показан на рис. 15.28.
Рис. 15.27. Фрагмент формулы, последовательно извлекающий номера строк, отвечающих критериям
Рис. 15.28. Только две записи соответствуют критериям, протягивание формулы далее вниз выдает ошибку
Как показано на рис. 15.29, функция НАИМЕНЬШИЙ, возвращающая относительную позицию отобранных строк, располагается в аргументе номер_строки функции ИНДЕКС.
Рис. 15.29. Функция НАИМЕНЬШИЙ располагается в аргументе номер_строки функции ИНДЕКС
Как показано на рис. 15.30, если ввести этот фрагмент формулы с помощью Ctrl+Shift+Enter в ячейку F12 и затем скопировать на весь диапазон, вы получите извлеченные записи. Ошибка #ЧИСЛО! вызвана тем, что только две записи соответствуют критериям отбора. Для третей и четвертой строк не нашлось данных.
Рис. 15.30. Только две записи являются релевантными
Рис. 15.31 показывает, как можно использовать функцию ЕСЛИ для замены ошибочного значения на нулевую текстовую строку. В целом формула выполняет большую работу, поэтому, чтобы не делать ее зря (и не замедлять расчеты), начните с проверки и подстановки нулевой текстовой строки.
Рис. 15.31. Используйте функцию ЕСЛИ для скрытия значений ошибок
Вы можете ввести построенную формулу в ячейку F12 нажав Ctrl+Shift+Enter (рис. 15.32), а затем скопировать ее на весь диапазон.
Рис. 15.32. Извлечены две записи
Рис. 15.33. Если критерии отбора изменились, формула мгновенно обновится; изменились даты
Формулы массива для извлечения данных с использованием функции АГРЕГАТ
Если у вас Excel 2010 или более поздняя версия, можно использовать функцию АГРЕГАТ, что позволит избежать использования Ctrl+Shift+Enter для ввода формулы. Как вы узнали в главах 4 и 11, можно использовать булеву алгебру для фильтрации значений внутри аргумента массив функции АГРЕГАТ. В этом примере отфильтрованным значениям будут сопоставлены относительные позиции.
Как показано на рис. 15.37, функция АГРЕГАТ расположена в аргументе номер_строки функции ИНДЕКС. Вы используете 15 в аргументе номер_функции АГРЕГАТ, что соответствует функции НАИМЕНЬШИЙ. Вы используете 6 в аргументе параметры, поручая функции АГРЕГАТ игнорировать ошибки. Вы строите массива булевых значений в аргументе массив функции АГРЕГАТ. Обратите внимание, что в числителе выражение в скобках создает массив относительных позиций – СТРОКА($A$11:$A$20)-СТРОКА($A$11)+1. В знаменателе размещены перемноженные три критерия – ($A$11:$A$20>=$B$3)*($A$11:$A$20<=$C$3)*($B$11:$B$20=$D$3).
Рис. 15.37. Функция АГРЕГАТ в аргументе номер_строки функции ИНДЕКС
Как показано на рис. 15.38, если вычислить числитель, вы получите ряд натуральных чисел, а в знаменателе – последовательность нулей и единиц. Знаменатель вернет единицу только если все три критерия выполнены.
Рис. 15.38. Аргумент массив функции Агрегат
Если продолжить вычисления (рис. 15.39), вы получить массив, включающий номера отобранных записей и значений ошибок #ДЕЛ/0! Ошибки фильтруются (игнорируются) аргументом 6 функции АГРГЕГАТ.
Рис. 15.39. Ошибки #ДЕЛ/0! соответствуют записям, не удовлетворяющим критериям
Как показано на рис. 15.40, вы можете закончить формулу, поместив счетчик – ЧСТРОК(F$12:F12) в качестве аргумента k функции АГРЕГАТ (не забывайте, что в данном примере она работает как функция НАИМЕНЬШИЙ). В диапазоне F12:I12 k принимает значение 1, в диапазоне F12:I12 – 2, далее не актуально, так как k становится больше значения в ячейке А7.
Рис. 15.40. Счетчик в аргументе k функции АГРЕГАТ
Финальная формула не требует ввода с помощью Ctrl+Shift+Enter. На рис. 15.41 и 15.42 показано, что вы можете изменить критерии и формулы мгновенно обновятся.
Рис. 15.41. Извлечены две записи
Рис. 15.42. Если критерии отбора изменились, формула мгновенно обновится; изменились даты
Возврат нескольких элементов на основе одного значением поиска
Стандартные функции поиска в Excel – ВПР, ПОИСКПОЗ и ИНДЕКС – если вы строите формулу массива, не могут возвращать несколько элементов с одним значением поиска. Как показано на рис. 15.44, вам необходимо выбрать название группы (Cascade в ячейки D3), найти все вхождения в базу данных (А2:В52), соответствующие выбранной группе, и вернуть связанные фамилии в поле Сотрудники (D5:D25). Можно использовать формулу на основе функций АГРЕГАТ (не требует ввода Ctrl+Shift+Enter) или НАИМЕНЬШИЙ (требует ввода Ctrl+Shift+Enter):
=ЕСЛИ(ЧСТРОК(D$6:D6)>E$3;"
"
;ИНДЕКС($A$3:$A$52;АГРЕГАТ(15;6;(СТРОКА($A$3:$A$52)-СТРОКА(A$3)+1)/($B$3:$B$52=D$3);ЧСТРОК(D$6:D6))))
{=ЕСЛИ(ЧСТРОК(D$6:D7)>E$3;"
"
;ИНДЕКС($A$3:$A$52;НАИМЕНЬШИЙ (ЕСЛИ($B$3:$B$52=D$3;СТРОКА($A$3:$A$52)-СТРОКА(D$3)+1);ЧСТРОК(D$6:D7))))}
Рис. 15.44 показан пример формулы на основе функции АГРЕГАТ. Формулу на основе НАИМЕНЬШИЙ можно найти во вложенном Excel-файле.
Рис. 15.44. Можно использовать функции НАИМЕНЬШИЙ или АГРЕГАТ в аргументе номер_строки функции ИНДЕКС
В качестве альтернативы использованию формулы массива для извлечения сотрудников по имени группы можно воспользоваться обычной ВПР, предварительно создав вспомогательный столбец (рис. 15.45). Обратите внимание на формулу в А3, а также на то, как представлено ее описание в ячейке А1 (его можно видеть в строке формул).
Рис. 15.45. Используя вспомогательный столбец можно извлечь данные обычной ВПР
Извлечение данных с ИЛИ критерием из одного столбца: Булева алгебра или ПОИСКПОЗ?
Этот пример является продолжением предыдущего примера. После извлечения всех имен сотрудников выбранной группы, вы можете использовать их в ИЛИ критерии, для извлечения части записей из набора данных. На рис. 15.46 обратите внимание на следующие:
- Критерии ИЛИ находятся в диапазоне I6:I
- Для каждой записи в наборе данных, формула должна задать вопрос, входит ли имя в диапазон критериев.
- Вы используете ЕЧИСЛО/ПОИСКПОЗ вместо 16 булевых проверок.
Рис. 15.46. Для извлечения данных с большим числом ИЛИ критериев в одном столбце используйте комбинацию функций ЕЧИСЛО/ПОИСКПОЗ; формула в ячейке F8 показана в строке формул
Вы также можете использовать альтернативную формулу в ячейке F8 которая не требует ввода Ctrl+Shift+Enter, так как основана на функции АГРЕГАТ):
=ЕСЛИ(ЧСТРОК(F$8:F8)>$G$5;"
"
;ИНДЕКС(B$5:B$936;АГРЕГАТ(15;6;(СТРОКА($B$5:$B$936)-СТРОКА($B$5)+1)/ЕЧИСЛО(ПОИСКПОЗ($B$5:$B$936;$I$6:$I$21;0));ЧСТРОК(F$8:F8))))
Извлечение данных с ИЛИ критериями в более чем одном столбце
На рис. 15.49 задача – извлечь записи, либо региона West, либо клиентов K с числом штук от 400 до 1300. Обратите внимание: (1) это двух-координатный поиск, где функция НАИМЕНЬШИЙ возвращает массив относительных позиций строк в аргумент номер_строки функции ИНДЕКС, а ПОИСКПОЗ возвращает относительную позицию столбцов в аргумент номер_столбца функции ИНДЕКС; (2) совокупность ИЛИ критериев может вернуть 1 или 2, но это не вызовет проблем, поскольку аргумент лог_выражение любое ненулевое число, интерпретирует как ИСТИНА.
Рис. 15.49. Критерии ИЛИ, работающие на разных столбцах + И критерии
Извлечение данных с И и ИЛИ критериями, и чисел, делящихся на 5
На рис. 15.51 задача – извлечь записи, либо региона West, либо клиентов K, с числом штук кратным 5. Обратите внимание на две особенности использования Булевой алгебры: (1) функция ОСТАТ возвращает 0 для значений кратных 5. Если ОСТАТ равен нулю, фрагмент формулы ОСТАТ($D$11:$D$20;$C$5)=0 вернет ИСТИНА; (2) Булево ИЛИ отвечает на вопрос: «Больше нуля?»: ($B$11:$B$20=$B$5)+($C$11:$C$20=$B$7)>0. Нельзя просто сравнить с 1, так как вы можете получить два значения ИСТИНА из двух столбцов.
Рис. 15.51. Формула массива на основе функции АГРЕГАТ для извлечения данных с И и ИЛИ критериями; использует функцию ОСТАТ для извлечения только количеств, делящихся на 5; формула в ячейке G11 отражена в строке формул
Сравнение двух списков
На рис. 15.53 задача – извлечь имена из Списка 2, которых нет в Списке 1. Функция ПОИСКПОЗ сравнивает два списка и возвращает ошибку #Н/Д, когда не находит нужного имени. С помощью функции ЕНД инвертируйте значение, чтобы получить ИСТИНУ, когда возвращается ошибка.
Рис. 15.53. Классическая формула сравнения двух списков; формула в ячейке Е9 отражена в строке формул
На рис. 15.54 решается обратная задача – извлечь имена, имеющиеся в обоих списках. Вместо ЕНД используется функция ЕЧИСЛО.
Рис. 15.54. Извлечение имен, имеющихся в обоих списках
Вспомогательные столбцы в области извлеченных данных
На рис. 15.55 задача – извлечения все записи, относящиеся к регионам West и Est. Допустим вам нельзя создать вспомогательный столбец в области данных, но вы хотите уменьшить время расчета формулы, так что решаете создать вспомогательный столбце в области извлечения данных. Как обсуждалось выше, всякий раз, когда один и тот же элемент формулы многократно повторяется, вы можете удалить его из формулы и поместить в отдельную ячейку, так что он будет вычисляться только один раз (столбец L). В этом случае функция АГРЕГАТ (или НАИМЕНЬШИЙ) возвращает одну и ту же относительную позицию для всего ряда.
Рис. 15.55. Наиболее сложный и повторяющийся элемент формулы, вычисляющий относительную позицию удаляется из формулы и помещается во вспомогательный столбец; это ускоряет работу формулы; формула в ячейке L10 приведена в строке формул
Динамический диапазон внутри формулы массива для извлечения записей
Иногда при извлечении данных требуется, чтобы формула искала в новых записях, которые вносятся в таблицу позже. Для этих целей подойдет задание имени диапазона, и определение его на основе формулы динамического диапазона (подробнее см. Глава 13. Динамические диапазоны на основе функций ИНДЕКС и СМЕЩ). Рис. 15.56 показывает два динамических диапазона, созданных с помощью функции ИНДЕКС и «большого числа». На рис. 15.57 при извлечении данных в формуле используются эти два имени. Всего извлечено четыре записи. При добавлении двух новых записей (А13:С14), размер динамического диапазона увеличивается, и число извлеченных записей автоматически увеличивается до шести (рис. 15.59).
Рис. 15.56. Используйте функцию ИНДЕКС и «большое число», чтобы создать два динамических диапазона
Рис. 15.57. Извлечение данных использует имена двух динамически определенных диапазонов
Рис. 15.59. При добавлении двух новых записей (А13:С14), размер динамического диапазона увеличивается, и число извлеченных записей автоматически увеличивается до шести
Сравнение методов извлечения данных
В таблице сравниваются различные методы извлечения данных, описанные в этой главе.
Некоторые ключевые понятия для формул извлечения данных
- Используйте функцию ЕСЛИ вместо ЕСЛИОШИБКА; это сократит время расчетов.
- Критерии И и ИЛИ могут быть созданы с помощью функции ЕСЛИ или Булевой алгебры.
- Используя ИЛИ критерии помните: (1) для критериев в одном столбце функции ЕЧИСЛО + ПОИСКПОЗ предпочтительнее, чем Булевы операторы, так как работают быстрее и более наглядны; (2) для критериев в нескольких столбцах, не забудьте, что их таки несколько.
- Есть два полезных способа думать о формулах извлечения данных: (1) извлекайте записи на основе набора критериев; (2) возвращайте нескольких элементов с помощью одного поиска.
[1] В 2013 г. я перевел 13 глав книги Гирвина, и остановился, так как статистика посещений показала, что тема не очень интересна читателям сайта (правда, были и положительные отзывы). Я возобновил перевод в связи любопытным вопросом в одном из комментариев.
Содержание
- Выполнение выборки
- Способ 1: применение расширенного автофильтра
- Способ 2: применение формулы массива
- Способ 3: выборка по нескольким условиям с помощью формулы
- Способ 4: случайная выборка
- Вопросы и ответы
При работе с таблицами Excel довольно часто приходится проводить отбор в них по определенному критерию или по нескольким условиям. В программе сделать это можно различными способами при помощи ряда инструментов. Давайте выясним, как произвести выборку в Экселе, используя разнообразные варианты.
Выполнение выборки
Выборка данных состоит в процедуре отбора из общего массива тех результатов, которые удовлетворяют заданным условиям, с последующим выводом их на листе отдельным списком или в исходном диапазоне.
Способ 1: применение расширенного автофильтра
Наиболее простым способом произвести отбор является применение расширенного автофильтра. Рассмотрим, как это сделать на конкретном примере.
- Выделяем область на листе, среди данных которой нужно произвести выборку. Во вкладке «Главная» щелкаем по кнопке «Сортировка и фильтр». Она размещается в блоке настроек «Редактирование». В открывшемся после этого списка выполняем щелчок по кнопке «Фильтр».
Есть возможность поступить и по-другому. Для этого после выделения области на листе перемещаемся во вкладку «Данные». Щелкаем по кнопке «Фильтр», которая размещена на ленте в группе «Сортировка и фильтр».
- После этого действия в шапке таблицы появляются пиктограммы для запуска фильтрования в виде перевернутых острием вниз небольших треугольников на правом краю ячеек. Кликаем по данному значку в заглавии того столбца, по которому желаем произвести выборку. В запустившемся меню переходим по пункту «Текстовые фильтры». Далее выбираем позицию «Настраиваемый фильтр…».
- Активируется окно пользовательской фильтрации. В нем можно задать ограничение, по которому будет производиться отбор. В выпадающем списке для столбца содержащего ячейки числового формата, который мы используем для примера, можно выбрать одно из пяти видов условий:
- равно;
- не равно;
- больше;
- больше или равно;
- меньше.
Давайте в качестве примера зададим условие так, чтобы отобрать только значения, по которым сумма выручки превышает 10000 рублей. Устанавливаем переключатель в позицию «Больше». В правое поле вписываем значение «10000». Чтобы произвести выполнение действия, щелкаем по кнопке «OK».
- Как видим, после фильтрации остались только строчки, в которых сумма выручки превышает 10000 рублей.
- Но в этом же столбце мы можем добавить и второе условие. Для этого опять возвращаемся в окно пользовательской фильтрации. Как видим, в его нижней части есть ещё один переключатель условия и соответствующее ему поле для ввода. Давайте установим теперь верхнюю границу отбора в 15000 рублей. Для этого выставляем переключатель в позицию «Меньше», а в поле справа вписываем значение «15000».
Кроме того, существует ещё переключатель условий. У него два положения «И» и «ИЛИ». По умолчанию он установлен в первом положении. Это означает, что в выборке останутся только строчки, которые удовлетворяют обоим ограничениям. Если он будет выставлен в положение «ИЛИ», то тогда останутся значения, которые подходят под любое из двух условий. В нашем случае нужно выставить переключатель в положение «И», то есть, оставить данную настройку по умолчанию. После того, как все значения введены, щелкаем по кнопке «OK».
- Теперь в таблице остались только строчки, в которых сумма выручки не меньше 10000 рублей, но не превышает 15000 рублей.
- Аналогично можно настраивать фильтры и в других столбцах. При этом имеется возможность сохранять также фильтрацию и по предыдущим условиям, которые были заданы в колонках. Итак, посмотрим, как производится отбор с помощью фильтра для ячеек в формате даты. Кликаем по значку фильтрации в соответствующем столбце. Последовательно кликаем по пунктам списка «Фильтр по дате» и «Настраиваемый фильтр».
- Снова запускается окно пользовательского автофильтра. Выполним отбор результатов в таблице с 4 по 6 мая 2016 года включительно. В переключателе выбора условий, как видим, ещё больше вариантов, чем для числового формата. Выбираем позицию «После или равно». В поле справа устанавливаем значение «04.05.2016». В нижнем блоке устанавливаем переключатель в позицию «До или равно». В правом поле вписываем значение «06.05.2016». Переключатель совместимости условий оставляем в положении по умолчанию – «И». Для того, чтобы применить фильтрацию в действии, жмем на кнопку «OK».
- Как видим, наш список ещё больше сократился. Теперь в нем оставлены только строчки, в которых сумма выручки варьируется от 10000 до 15000 рублей за период с 04.05 по 06.05.2016 включительно.
- Мы можем сбросить фильтрацию в одном из столбцов. Сделаем это для значений выручки. Кликаем по значку автофильтра в соответствующем столбце. В выпадающем списке щелкаем по пункту «Удалить фильтр».
- Как видим, после этих действий, выборка по сумме выручки будет отключена, а останется только отбор по датам (с 04.05.2016 по 06.05.2016).
- В данной таблице имеется ещё одна колонка – «Наименование». В ней содержатся данные в текстовом формате. Посмотрим, как сформировать выборку с помощью фильтрации по этим значениям.
Кликаем по значку фильтра в наименовании столбца. Последовательно переходим по наименованиям списка «Текстовые фильтры» и «Настраиваемый фильтр…».
- Опять открывается окно пользовательского автофильтра. Давайте сделаем выборку по наименованиям «Картофель» и «Мясо». В первом блоке переключатель условий устанавливаем в позицию «Равно». В поле справа от него вписываем слово «Картофель». Переключатель нижнего блока так же ставим в позицию «Равно». В поле напротив него делаем запись – «Мясо». И вот далее мы выполняем то, чего ранее не делали: устанавливаем переключатель совместимости условий в позицию «ИЛИ». Теперь строчка, содержащая любое из указанных условий, будет выводиться на экран. Щелкаем по кнопке «OK».
- Как видим, в новой выборке существуют ограничения по дате (с 04.05.2016 по 06.05.2016) и по наименованию (картофель и мясо). По сумме выручки ограничений нет.
- Полностью удалить фильтр можно теми же способами, которые использовались для его установки. Причем неважно, какой именно способ применялся. Для сброса фильтрации, находясь во вкладке «Данные» щелкаем по кнопке «Фильтр», которая размещена в группе «Сортировка и фильтр».
Второй вариант предполагает переход во вкладку «Главная». Там выполняем щелчок на ленте по кнопке «Сортировка и фильтр» в блоке «Редактирование». В активировавшемся списке нажимаем на кнопку «Фильтр».
При использовании любого из двух вышеуказанных методов фильтрация будет удалена, а результаты выборки – очищены. То есть, в таблице будет показан весь массив данных, которыми она располагает.
Урок: Функция автофильтр в Excel
Способ 2: применение формулы массива
Сделать отбор можно также применив сложную формулу массива. В отличие от предыдущего варианта, данный метод предусматривает вывод результата в отдельную таблицу.
- На том же листе создаем пустую таблицу с такими же наименованиями столбцов в шапке, что и у исходника.
- Выделяем все пустые ячейки первой колонки новой таблицы. Устанавливаем курсор в строку формул. Как раз сюда будет заноситься формула, производящая выборку по указанным критериям. Отберем строчки, сумма выручки в которых превышает 15000 рублей. В нашем конкретном примере, вводимая формула будет выглядеть следующим образом:
=ИНДЕКС(A2:A29;НАИМЕНЬШИЙ(ЕСЛИ(15000<=C2:C29;СТРОКА(C2:C29);"");СТРОКА()-СТРОКА($C$1))-СТРОКА($C$1))
Естественно, в каждом конкретном случае адрес ячеек и диапазонов будет свой. На данном примере можно сопоставить формулу с координатами на иллюстрации и приспособить её для своих нужд.
- Так как это формула массива, то для того, чтобы применить её в действии, нужно нажимать не кнопку Enter, а сочетание клавиш Ctrl+Shift+Enter. Делаем это.
- Выделив второй столбец с датами и установив курсор в строку формул, вводим следующее выражение:
=ИНДЕКС(B2:B29;НАИМЕНЬШИЙ(ЕСЛИ(15000<=C2:C29;СТРОКА(C2:C29);"");СТРОКА()-СТРОКА($C$1))-СТРОКА($C$1))
Жмем сочетание клавиш Ctrl+Shift+Enter.
- Аналогичным образом в столбец с выручкой вписываем формулу следующего содержания:
=ИНДЕКС(C2:C29;НАИМЕНЬШИЙ(ЕСЛИ(15000<=C2:C29;СТРОКА(C2:C29);"");СТРОКА()-СТРОКА($C$1))-СТРОКА($C$1))
Опять набираем сочетание клавиш Ctrl+Shift+Enter.
Во всех трех случаях меняется только первое значение координат, а в остальном формулы полностью идентичны.
- Как видим, таблица заполнена данными, но внешний вид её не совсем привлекателен, к тому же, значения даты заполнены в ней некорректно. Нужно исправить эти недостатки. Некорректность даты связана с тем, что формат ячеек соответствующего столбца общий, а нам нужно установить формат даты. Выделяем весь столбец, включая ячейки с ошибками, и кликаем по выделению правой кнопкой мыши. В появившемся списке переходим по пункту «Формат ячейки…».
- В открывшемся окне форматирования открываем вкладку «Число». В блоке «Числовые форматы» выделяем значение «Дата». В правой части окна можно выбрать желаемый тип отображения даты. После того, как настройки выставлены, жмем на кнопку «OK».
- Теперь дата отображается корректно. Но, как видим, вся нижняя часть таблицы заполнена ячейками, которые содержат ошибочное значение «#ЧИСЛО!». По сути, это те ячейки, данных из выборки для которых не хватило. Более привлекательно было бы, если бы они отображались вообще пустыми. Для этих целей воспользуемся условным форматированием. Выделяем все ячейки таблицы, кроме шапки. Находясь во вкладке «Главная» кликаем по кнопке «Условное форматирование», которая находится в блоке инструментов «Стили». В появившемся списке выбираем пункт «Создать правило…».
- В открывшемся окне выбираем тип правила «Форматировать только ячейки, которые содержат». В первом поле под надписью «Форматировать только ячейки, для которых выполняется следующее условие» выбираем позицию «Ошибки». Далее жмем по кнопке «Формат…».
- В запустившемся окне форматирования переходим во вкладку «Шрифт» и в соответствующем поле выбираем белый цвет. После этих действий щелкаем по кнопке «OK».
- На кнопку с точно таким же названием жмем после возвращения в окно создания условий.
Теперь у нас имеется готовая выборка по указанному ограничению в отдельной надлежащим образом оформленной таблице.
Урок: Условное форматирование в Excel
Способ 3: выборка по нескольким условиям с помощью формулы
Так же, как и при использовании фильтра, с помощью формулы можно осуществлять выборку по нескольким условиям. Для примера возьмем всю ту же исходную таблицу, а также пустую таблицу, где будут выводиться результаты, с уже выполненным числовым и условным форматированием. Установим первым ограничением нижнюю границу отбора по выручке в 15000 рублей, а вторым условием верхнюю границу в 20000 рублей.
- Вписываем в отдельном столбце граничные условия для выборки.
- Как и в предыдущем способе, поочередно выделяем пустые столбцы новой таблицы и вписываем в них соответствующие три формулы. В первый столбец вносим следующее выражение:
=ИНДЕКС(A2:A29;НАИМЕНЬШИЙ(ЕСЛИ(($D$2=C2:C29);СТРОКА(C2:C29);"");СТРОКА(C2:C29)-СТРОКА($C$1))-СТРОКА($C$1))
В последующие колонки вписываем точно такие же формулы, только изменив координаты сразу после наименования оператора ИНДЕКС на соответствующие нужным нам столбцам, по аналогии с предыдущим способом.
Каждый раз после ввода не забываем набирать сочетание клавиш Ctrl+Shift+Enter.
- Преимущество данного способа перед предыдущим заключается в том, что если мы захотим поменять границы выборки, то совсем не нужно будет менять саму формулу массива, что само по себе довольно проблематично. Достаточно в колонке условий на листе поменять граничные числа на те, которые нужны пользователю. Результаты отбора тут же автоматически изменятся.
Способ 4: случайная выборка
В Экселе с помощью специальной формулы СЛЧИС можно также применять случайный отбор. Его требуется производить в некоторых случаях при работе с большим объемом данных, когда нужно представить общую картину без комплексного анализа всех данных массива.
- Слева от таблицы пропускаем один столбец. В ячейке следующего столбца, которая находится напротив первой ячейки с данными таблицы, вписываем формулу:
=СЛЧИС()
Эта функция выводит на экран случайное число. Для того, чтобы её активировать, жмем на кнопку ENTER.
- Для того, чтобы сделать целый столбец случайных чисел, устанавливаем курсор в нижний правый угол ячейки, которая уже содержит формулу. Появляется маркер заполнения. Протягиваем его вниз с зажатой левой кнопкой мыши параллельно таблице с данными до её конца.
- Теперь у нас имеется диапазон ячеек, заполненный случайными числами. Но, он содержит в себе формулу СЛЧИС. Нам же нужно работать с чистыми значениями. Для этого следует выполнить копирование в пустой столбец справа. Выделяем диапазон ячеек со случайными числами. Расположившись во вкладке «Главная», щелкаем по иконке «Копировать» на ленте.
- Выделяем пустой столбец и кликаем правой кнопкой мыши, вызывая контекстное меню. В группе инструментов «Параметры вставки» выбираем пункт «Значения», изображенный в виде пиктограммы с цифрами.
- После этого, находясь во вкладке «Главная», кликаем по уже знакомому нам значку «Сортировка и фильтр». В выпадающем списке останавливаем выбор на пункте «Настраиваемая сортировка».
- Активируется окно настройки сортировки. Обязательно устанавливаем галочку напротив параметра «Мои данные содержат заголовки», если шапка имеется, а галочки нет. В поле «Сортировать по» указываем наименование того столбца, в котором содержатся скопированные значения случайных чисел. В поле «Сортировка» оставляем настройки по умолчанию. В поле «Порядок» можно выбрать параметр как «По возрастанию», так и «По убыванию». Для случайной выборки это значения не имеет. После того, как настройки произведены, жмем на кнопку «OK».
- После этого все значения таблицы выстраиваются в порядке возрастания или убывания случайных чисел. Можно взять любое количество первых строчек из таблицы (5, 10, 12, 15 и т.п.) и их можно будет считать результатом случайной выборки.
Урок: Сортировка и фильтрация данных в Excel
Как видим, выборку в таблице Excel можно произвести, как с помощью автофильтра, так и применив специальные формулы. В первом случае результат будет выводиться в исходную таблицу, а во втором – в отдельную область. Имеется возможность производить отбор, как по одному условию, так и по нескольким. Кроме того, можно осуществлять случайную выборку, использовав функцию СЛЧИС.
Еще статьи по данной теме:
Помогла ли Вам статья?
Introduction
In this article, I am going to show you how to use an Excel workbook as your data source and fetch data based on your SQL query. In my first step, I will show you how to write a query using SQL syntax and next, I will show you how to fetch and bind data in your DataGrid
.
Background
When I started reading an Excel workbook by writing traditional VBA code I found it’s complicated to read even one cell value. After writing successful code too, you may be trapped under the COM memory leakage issue. If your Excel file has a huge amount of data to read and quite a few number of sheets, then you can expect a nice popup window showing up with, «You are running out of virtual memory.» Even after killing several objects during this process, you cannot make sure that your object will be released immediately. Finally I found that SQL can reduce code complexity and I can gain performance and there is no memory leakage issue. I am assuming that those of you who are reading this article have basic knowledge of ADO.NET and Microsoft Excel.
Using the Code
Getting data from any data storage using ADO.NET is very simple. Before writing real code, let’s create a Windows application (though you can use Web application as well), and add the following line at the top of the target form. I am going to use OLEDB API for accessing Excel data. OLEDB will take help of the JET engine to execute a query and fetch data from Excel.
using System.Data.OleDb;
Please make a note that I am using Office 2003 and Visual Studio 2003.
1. Connection String
First, we will establish connection to our data source. It is very similar to connecting to the SQL Server or Oracle.
OleDbConnection con = new OleDbConnection( "provider=Microsoft.Jet.OLEDB.4.0;data source=" + "File Name with Complete Path" +";Extended Properties=Excel 8.0;");
2. Writing Query
Writing an Excel query is as similar as writing a query in any other traditional data storage like SQL Server, Oracle, etc. However there are a few differences. First, you have to specify your sheet name instead of your table name. Next, you have to give starting and end cell references. Watch my following code carefully:
SELECT * FROM [42560035$A1:F500]
- In the above query,
42560035
is my sheet name (consider this to be your table name). In your case, this name may be different. Please do not forget to write your sheet name inside[]
bracket. - Next to the sheet name is my start cell and end cell reference. Your Excel file may contain different cell references. Please make sure that after your sheet name, you are using the dollar sign ($) then your start cell reference and end cell reference separated by colon (:). It is an error if you do not mention your start cell and end cell references in your query.
This was a very simple query. Here is the more complicated one:
SELECT * FROM [42560030$A21:F500] WHERE [Period_End Date] = #3/2/2007# ORDER BY [Date_Incurred]
In place of *
, which returns all columns, you can specify exact column(s) name you are looking for. Here is an example:
SELECT [Associate Name] as Associate,[Amount] as Amount FROM [42560030$A21:F500] WHERE [Period_End Date] = #3/2/2007# ORDER BY [Date_Incurred]
Please make sure that you are placing your column name inside []
bracket if your column name contains a white space. Otherwise, your JET engine will throw an exception. For consistency, place all column names inside []
bracket. One more interesting point: if you observe the [Period_End Date]
column name carefully, there is an underscore (_) between Period
and End
. This is because in my Excel sheet I wrote Period
in one line and End Date
in the next line. Please note that when I wrote the next line, that meant Next Line not next cell. The next step is to build our data adapter.
3. DataAdapter
StringBuilder stbQuery = new StringBuilder(); stbQuery.Append("SELECT * FROM [42560035$A1:F500]"); OleDbDataAdapter adp = new OleDbDataAdapter(stbQuery.Tostring(),con);
4. Filling DataSet
DataSet dsXLS = new DataSet() adp.Fill(dsXLS);
5. Binding Grid
After filling the data, now is the time is to see the data. For that, we can use DataGrid
or you can write your dataset into an XML file by using the WriteXml
method. In this example, I will be using DataGrid
to display my data.
DataView dvEmp = new DataView(ds.Tables[0]);
dataGrid1.DataSource = dvEml;
That is all.
Closing Note
In my next article, I am going to show you how to post data in an Excel sheet.
History
- 30th July, 2007: Initial post
Working with Logica Pvt. Ltd as a Tech Lead.
Russian (Pусский) translation by Alexey Malyutin (you can also view the original English article)
Когда вам нужно найти и извлечь столбец данных из одной таблицы и поместить ее в другую, используйте функцию VLOOKUP. Эта функция работает в любой версии Excel под Windows и на Mac, а также в Google Sheets. Она позволит вам найти данные в одной таблице используя некоторый идентификатор в ней, общий с другой таблицей. Обе таблицы могут находиться на разных листах или даже в в разных книгах. Есть также функция HLOOKUP, которая делает то же самое, но с данными, расположенными горизонтально, по строкам.
Функции MATCH и INDEX полезны, когда вас интересует местоположение конкретных данных, таких как столбец или строка, которая содержит имя человека.
Лучшие варианты
Перед тем, как мы погрузимся в функции Excel, вы в курсе, что Envato Market содержит массу скриптов и плагинов Excel, которые позволят вам выполнять продвинутые функции?
Например, вы можете:
- экспортировать данные WordPress в Excel
- синтаксически анализировать и извлекать данные из Excel с помощью PHP класса
- конвертировать таблицу Excel в соответствующую HTML таблицу
- конвертировать файлы Excel в объект .NET DataTable
- и многое другое
Скринкаст
Если вы хотите следовать инструкциям этого руководства, используя свой файл Excel, вы можете это сделать. Или, если хотите, скачайте zip файл, прилагаемый к этому руководству, который содержит электронную таблицу с примером, она называется vlookup example.xlsx.
Использование VLOOKUP
Когда VLOOKUP находит идентификатор, который вы задали в исходных данных, она может найти любую ячейку в этой строке и вернуть вам эту информацию. Имейте в виду, что в исходных данных идентификатор должен находиться в первом столбце таблицы.
Синтаксис
Синтаксис функции VLOOKUP:
=VLOOKUP(искомое значение, диапазон таблицы, номер столбца, [true/false])
Вот что означают эти аргументы:
- Искомое значение. Ячейка, в которой находится уникальный идентификатор.
- Диапазон таблицы. Диапазон ячеек, которые содержат идентификатор в первом столбце, а в последующих столбцах располагаются остальные данные.
- Номер столбца. Номер столбца, в котором находятся данные, которые вам нужны. Не путайте его с буквой столбца. На рисунке выше, штаты находятся в столбце 4.
- True/False. Этот аргумент необязателен. True означает, что приемлемо приблизительное совпадение, а False означает, что допустимо только точное совпадение.
Мы хотим найти количество продаж из таблицы на рисунке ниже, поэтому используем такие аргументы:
Определение имени диапазона для создания абсолютной ссылки
В Vlookup example.xlsx посмотрите на лист Sales Amounts. Мы введем формула в ячейку B5, затем используем возможность автозаполнения, чтобы скопировать формула в ячейки ниже нее. Это значит, что диапазон ячеек в формуле должен быть абсолютной ссылкой. Хороший способ сделать это — это задать имя для диапазона ячеек.
Задание имени диапазона в Excel
- Перед тем, как вводить формулу, перейдите на лист source data.
- Выделите ячейки от A4 (заголовок для столбца Order #) до H203. Быстрый способ это сделать — это кликнуть по A4, затем нажать Ctrl-Shift-End (Command-Shift-End на Маке).
- Кликните внутри поля Name Box (Имя) над столбцом A (сейчас в поле Name Box отображается A4).
- Напечатайте data, затем нажмите Enter.
- Теперь вы можете использовать в формуле имя data вместо $A$4:$H$203.
Задание имени диапазона в Google Sheets.
В Google Sheets имя задается немного по другому.
- Кликните по заголовку первого столбца ваших исходных данных, затем нажмите Ctrl-Shift-Стрелка вправо (Command-Shift-Стрелка вправо на Маках). Затем выберите строку заголовков столбцов.
- Нажмите Ctrl-Shift-Стрелка вниз (Command-Shift-Стрелка вниз на Маке). Затем выберите актуальные данные.
- Кликните в меню Data (Данные), затем выберите Named and protected ranges (Именованные и защищенные диапазоны).
- В поле Name and protected ranges box справа напечатайте data, затем кликните Done.
Ввод формулы
Чтобы ввести формулу, перейдите на лист Sales Amounts и кликните по ячейке B5.
Введите формулу:
=VLOOKUP(A5,data,8,FALSE)
Нажмите Enter.
Результат должен быть равен 40. Чтобы заполнить значения ниже по столбцу, снова кликните на B5, если необходимо. Поместите курсор мыши на точку автозаполнения в правом нижнем углу ячейки, так, чтобы курсор изменил свою форму на перекрестие.
Кликните дважды, чтобы заполнить значения ниже по столбцу.
Если хотите, вы можете запустить функцию VLOOKUP в следующих нескольких столбцах, чтобы извлечь другие поля, такие как фамилия или штат.
Использование MATCH
Функция MATCH не возвращает вам значение из данных; вы задаете значение, которое вы ищете и функция возвращает позицию этого значения. Это как спросить, где находится Мейн стрит, 135, и получить ответ, что это четвертое здание вниз по улице.
Синтаксис
Синтаксис функции MATCH:
=MATCH(искомое значение, диапазон таблицы, [тип совпадения])
Аргументы:
- Искомое значение. Ячейка, содержащая уникальный идентификатор.
- Диапазон таблицы. Диапазон ячеек, в котором мы ищем.
- Тип совпадения. Необязательный. Определяет, насколько точным должно быть совпадение, согласно:
Следующее большее значение |
-1 |
Значения должны располагаться в убывающем порядке. |
Целевое значение |
0 |
Значения могут идти в любом порядке. |
Следующее меньшее значение |
1 |
Тип по умолчанию. Значения должны располагаться в возрастающем порядке. |
Как и в случае с функцией VLOOKUP, возможно, вы найдете использование функции MATCH более простым, если назначите имя диапазону. Перейдите на лист Source Data, выделите диапазон от B4 (заголовок столбца c номером заказа) до низа, кликните в поле Name box (Имя), расположенное над столбцом A, и назовите его order_number. Обратите внимание, что значения расположены в возрастающем порядке.
Перейдите на вкладку Match листа. В ячейку B5 введите функцию MATCH:
=MATCH(A5,order_number,1)
Если вы не задавали имя диапазону, вам надо написать функцию так:
=MATCH(A5,'Source Data'!A5:A203,0)
В любом случае вы увидите, что значение находится в 14й позиции (что делает его 13м по порядку).
Использование INDEX
Функция INDEX противоположна функции MATCH и похожа на VLOOKUP. Вы сообщаете функции, какая строка и столбец данных вам нужны, и она сообщает вам значение, которое находится в ячейке.
Синтаксис
Синтаксис функции INDEX следующий:
=INDEX(диапазон данных, номер строки, [номер столбца])
Аргументы:
- Диапазон данных. Как и в остальных двух функциях, это таблица с данными.
- Номер строки. Номер строки с данными, которая необязательно является строкой листа. Если диапазон начинается на 10-й строке листа, тогда это строка №1.
- Номер столбца. Номер столбца диапазона данных. Если диапазон начинается в столбце E, тогда номер столбца — 1.
Документация Excel говорит нам, что номер столбца это необязательный аргумент, но номер строки тоже является своего рода необязательным. Если диапазон таблицы состоит только из одной строки или одного столбца, вам не нужно использовать другой аргумент.
Перейдите на лист Index и кликните на ячейке C6. Сначала мы хотим найти, что содержится в строке 9, столбце 3 таблицы. В формуле мы используем имя диапазона, которое мы создали ранее.
Введите формулу:
=INDEX(data,A6,B6)
Она возвращает фамилию покупателя: Strevell. Изменяйте значения в ячейках A6 и B6, и ячейка C6 будет показывать разные результаты (обратите внимание, что многие строки содержат одинаковые штаты и названия продуктов).
Заключение
Способность рабочего листа заглядывать в другой рабочий лист и извлекать оттуда данные — это отличный инструмент. Таким образом, у вас может быть один лист, который содержит все данные, необходимые вам для различных целей, и вы можете извлекать оттуда то, что вам нужно для конкретных случаев.