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.
К началу страницы
Нужна дополнительная помощь?
Перейти к содержанию
На чтение 2 мин Опубликовано 19.06.2015
Этот пример научит вас импортировать данные из базы данных Microsoft Access с помощью мастера запросов Microsoft Query. Используя Microsoft Query, вы можете выбрать нужные столбцы и импортировать в Excel только их.
- На вкладке Data (Данные) нажмите кнопку From Other Sources (Из других источников) и выберите From Microsoft Query (Из Microsoft Query).Появится диалоговое окно Choose Data Source (Выбор источника данных).
- Выберите MS Access Database* и поставьте галочку напротив опции Use the Query Wizard to create/edit queries (Использовать мастер запросов).
- Нажмите ОК.
- Выберите базу данных и кликните ОК.Эта база данных состоит из нескольких таблиц. Вы можете выбрать таблицу и столбцы, которые нужно включить в запрос.
- Выделите таблицу Customers и кликните по кнопке с символом «>«.
- Нажмите Next (Далее).
- Чтобы импортировать только указанный набор данных, отфильтруйте их. Для этого выделите City в списке Column to filter (Столбцы для отбора). Справа в первом выпадающем списке выберите equals (равно), а во втором название города – New York.
- Нажмите Next (Далее).
Вы можете отсортировать данные, если хотите, мы же не будем этого делать.
- Нажмите Next (Далее).
- Нажмите Finish (Готово), чтобы отправить данные в Microsoft Excel.
- Выберите тип отображения информации, куда следует поместить данные и нажмите ОК.
Результат:
Примечание: Когда база данных Access изменится, можно будет нажать Refresh (Обновить), чтобы загрузить изменения в Excel.
Оцените качество статьи. Нам важно ваше мнение:
You can use Microsoft Query in Excel to retrieve data from an Excel Workbook as well as External Data Sources using SQL SELECT Statements. Excel Queries created this way can be refreshed and rerun making them a comfortable and efficient tool in Excel.
Microsoft Query allows you use SQL directly in Microsoft Excel, treating Sheets as tables against which you can run Select statements with JOINs, UNIONs and more. Often Microsoft Query statements will be more efficient than Excel formulas or a VBA Macro. A Microsoft Query (aka MS Query, aka Excel Query) is in fact an SQL SELECT Statement. Excel as well as Access use Windows ACE.OLEDB or JET.OLEDB providers to run queries. Its an incredible often untapped tool underestimated by many users!
What can I do with MS Query?
Using MS Query in Excel you can extract data from various sources such as:
- Excel Files – you can extract data from External Excel files as well as run a SELECT query on your current Workbook
- Access – you can extract data from Access Database files
- MS SQL Server – you can extract data from Microsoft SQL Server Tables
- CSV and Text – you can upload CSV or tabular Text files
Step by Step – Microsoft Query in Excel
In this step by step tutorial I will show you how to create an Microsoft Query to extract data from either you current Workbook or an external Excel file.
I will extract data from an External Excel file called MOCK DATA.xlsx. In this file I have a list of Male/Female mock-up customers. I will want to create a simple query to calculate how many are Male and how many Female.
Open the MS Query (from Other Sources) wizard
Go to the DATA Ribbon Tab and click From Other Sources. Select the last option From Microsoft Query.
Select the Data Source
Next we need to specify the Data Source for our Microsoft Query. Select Excel Files to proceed.
Select Excel Source File
Now we need to select the Excel file that will be the source for our Microsoft Query. In my example I will select my current Workbook, the same from which I am creating my MS Query.
Select Columns for your MS Query
The Wizard now asks you to select Columns for your MS Query. If you plan to modify the MS Query manually later simply click OK. Otherwise select your Columns.
Return Query or Edit Query
Now you have two options:
- Return Data to Microsoft Excel – this will return your query results to Excel and complete the Wizard
- View data or edit query in Microsoft Query – this will open the Microsoft Query window and allow you to modify you Microsoft Query
Optional: Edit Query
If you select the View data or edit query in Microsoft Query option you can now open the SQL Edit Query window by hitting the SQL button. When you are done hit the return button (the one with the open door).
Import Data
When you are done modifying your SQL statement (as I in previous step). Click the Return data button in the Microsoft Query window.
This should open the Import Data window which allows you to select when the data is to be dumped.
Lastly, when you are done click OK on the Import Data window to complete running the query. You should see the result of the query as a new Excel table:
As in the window above I have calculated how many of the records in the original table where Male and how many Female.
AS you can see there are quite a lot of steps needed to achieve something potentially pretty simple. Hence there are a couple of alternatives thanks to the power of VBA Macro….
MS Query – Create with VBA
If you don’t want to use the SQL AddIn another way is to create these queries using a VBA Macro. Below is a quick macro that will allow you write your query in a simple VBA InputBox at the selected range in your worksheet.
Just use my VBA Code Snippet:
Sub ExecuteSQL() Attribute ExecuteSQL.VB_ProcData.VB_Invoke_Func = "Sn14" 'AnalystCave.com On Error GoTo ErrorHandl Dim SQL As String, sConn As String, qt As QueryTable SQL = InputBox("Provide your SQL Query", "Run SQL Query") If SQL = vbNullString Then Exit Sub sConn = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;;Password=;User ID=Admin;Data Source=" & _ ThisWorkbook.Path & "/" & ThisWorkbook.Name & ";" & _ "Mode=Share Deny Write;Extended Properties=""Excel 12.0 Xml;HDR=YES"";" Set qt = ActiveCell.Worksheet.QueryTables.Add(Connection:=sConn, Destination:=ActiveCell) With qt .CommandType = xlCmdSql .CommandText = SQL .Name = Int((1000000000 - 1 + 1) * Rnd + 1) .RefreshStyle = xlOverwriteCells .Refresh BackgroundQuery:=False End With Exit Sub ErrorHandl: MsgBox "Error: " & Err.Description: Err.Clear End Sub
Just create a New VBA Module and paste the code above. You can run it hitting the CTRL+SHIFT+S Keyboardshortcut or Add the Macro to your Quick Access Toolbar.
Learning SQL with Excel
Creating MS Queries is one thing, but you need to have a pretty good grasp of the SQL language to be able to use it’s true potential. I recommend using a simple Excel database (like Northwind) and practicing various queries with JOINs.
Alternatives in Excel – Power Query
Another way to run queries is to use Microsoft Power Query (also known in Excel 2016 and up as Get and Transform). The AddIn provided by Microsoft does require knowledge of the SQL Language, rather allowing you to click your way through the data you want to tranform.
MS Query vs Power Query Conclusions
MS Query Pros: Power Query is an awesome tool, however, it doesn’t entirely invalidate Microsoft Queries. What is more, sometimes using Microsoft Queries is quicker and more convenient and here is why:
- Microsoft Queries are more efficient when you know SQL. While you can click your way through to Transform Data via Power Query someone who knows SQL will likely be much quicker in writing a suitable SELECT query
- You can’t re-run Power Queries without the AddIn. While this obviously will be a less valid statement probably in a couple of years (in newer Excel versions), currently if you don’t have the AddIn you won’t be able to edit or re-run Queries created in Power Query
MS Query Cons: Microsoft Query falls short of the Power Query AddIn in some other aspects however:
- Power Query has a more convenient user interface. While Power Queries are relatively easy to create, the MS Query Wizard is like a website from the 90’s
- Power Query stacks operations on top of each other allowing more convenient changes. While an MS Query works or just doesn’t compile, the Power Query stacks each transform operation providing visibility into your Data Transformation task, and making it easier to add / remove operations
In short I encourage learning Power Query if you don’t feel comfortable around SQL. If you are advanced in SQL I think you will find using good ole Microsoft Queries more convenient. I would compare this to the Age-Old discussion between Command Line devs vs GUI devs…
We can use queries to extract data from all kinds of data sources. In many cases, it is a more efficient tool than using VBA Macro or formulas. In this tutorial, we will learn how to retrieve data using query from a workbook, Microsoft Access, and many other Microsoft SQL Server tables.
Figure 1 – Writing query
Using the Microsoft query tool
- In our open Excel document, we will click on Data in the ribbon tab and select From Other sources. If we are using Excel 2016, we will click on Get External Data directly from the Data tab
Figure 2 – Microsoft query wizard
- In the drop-down list, we will select From Microsoft Query
Figure 3 – Microsoft query tool
- In the Choose Data Source dialog box, we will specify the location of our file. In our example, we want to locate a file, so we will click on files.
Figure 4 – Query access
- Next, we will select the file that will be our source for the Microsoft Query.
Figure 5 – Ms query download
- We will be asked to pick the columns we want to include in our MS query
Figure 6 – Querying spreadsheet
- We will click on the columns we want to include and select Next
Figure 7 – Microsoft query tool
- We can filter how we want our data to appear in the next dialog box.
Figure 8 – Querying spreadsheet
- Next, we will be asked to sort our data. If we don’t want to edit yet, we can click Next
Figure 9 – How to use query wizard
- The Query Wizard will return with two options. We can either return data to Microsoft Excel or view data or edit query in Microsoft Query
Figure 10 – Excel query
- If we selected the View data or edit query in Microsoft Query option, we can open the SQL Edit Query window by clicking on the SQL button
Figure 11 – Using the Microsoft Excel Query
- When we are done with the edit, we will click on the return button (the open door button as shown below)
Figure 12 – Use the return button to exit the Microsoft Query
- After modifying our SQL statement, we will click on return data button in the Microsoft Query window.
- Then, in the Import Data dialog box, we can select how we want to view the data and where we want to put the data.
Figure 13 – Select how you wish to view your data
- Lastly, we will click OK
- The result of our query will appear in the new Excel table. Now, we can edit and modify our new table
Figure 14 – Result from using the MS query
Instant Connection to an Excel Expert
Most of the time, the problem you will need to solve will be more complex than a simple application of a formula or function. If you want to save hours of research and frustration, try our live Excelchat service! Our Excel Experts are available 24/7 to answer any Excel question you may have. We guarantee a connection within 30 seconds and a customized solution within 20 minutes.
This example teaches you how to import data from a Microsoft Access database by using the Microsoft Query Wizard. With Microsoft Query, you can select the columns of data that you want and import only that data into Excel.
1. On the Data tab, in the Get & Transform Data group, click Get Data.
2. Click From Other Sources, From Microsoft Query.
The ‘Choose Data Source» dialog box appears.
3. Select MS Access Database* and check ‘Use the Query Wizard to create/edit queries’.
4. Click OK.
5. Select the database and click OK.
This Access database consists of multiple tables. You can select the table and columns you want to include in your query.
6. Select Customers and click the > symbol.
7. Click Next.
To only import a specified set of records, filter the data.
8. Click City from the ‘Column to filter’ list and only include rows where City equals New York.
9. Click Next.
You can sort your data if you want (we don’t do it here).
10. Click Next.
11. Click Finish to return the data to Microsoft Excel.
12. Select how you want to view this data, where you want to put it, and click OK.
Result:
13. When your Access data changes, you can easily refresh the data in Excel. First, select a cell inside the table. Next, on the Table Design tab, in the External Table Data group, click Refresh.
Постановка задачи
Давайте разберем красивое решение для одной из весьма стандартных ситуаций, с которой рано или поздно сталкивается большинство пользователей Excel: нужно быстро и автоматически собрать данные из большого количества файлов в одну итоговую таблицу.
Предположим, что у нас есть вот такая папка, в которой содержится несколько файлов с данными из филиалов-городов:
Количество файлов роли не играет и может меняться в будущем. В каждом файле есть лист с именем Продажи, где расположена таблица с данными:
Количество строк (заказов) в таблицах, само-собой, разное, но набор столбцов везде стандартный.
Задача: собрать данные из всех файлов в одну книгу с последующим автоматическим обновлением при добавлении-удалении файлов-городов или строк в таблицах. По итоговой консолидированной таблице затем можно будет строить любые отчеты, сводные таблицы, фильтровать-сортировать данные и т.д. Главное — суметь собрать.
Подбираем оружие
Для решения нам потребуется последняя версия Excel 2016 (в нее нужный функционал уже встроен по умолчанию) или предыдущие версии Excel 2010-2013 с установленной бесплатной надстройкой Power Query от Microsoft (скачать ее можно здесь). Power Query — это супергибкий и супермощный инструмент для загрузки в Excel данных из внешнего мира с последующей их зачисткой и обработкой. Power Query поддерживает практически все существующие источники данных — от текстовых файлов до SQL и даже Facebook
Если у вас нет Excel 2013 или 2016, то дальше можно не читать (шучу). В более древних версиях Excel подобную задачу можно реализовать только программированием макроса на Visual Basic (что весьма непросто для начинающих) или монотонным ручным копированием (что долго и порождает ошибки).
Шаг 1. Импортируем один файл как образец
Для начала давайте импортируем данные из одной книги в качестве примера, чтобы Excel «подхватил идею». Для этого создайте новую пустую книгу и…
- если у вас Excel 2016, то откройте вкладку Данные и выберите Создать запрос — Из файла — Из книги (Data — New Query- From file — From Excel)
- если у вас Excel 2010-2013 с установленной надстройкой Power Query, то откройте вкладку Power Query и выберите на ней Из файла — Из книги (From file — From Excel)
Затем в открывшемся окне переходим в нашу папку с отчетами и выбираем любой из файлов-городов (не играет роли какой именно, т.к. они все типовые). Через пару секунд должно появиться окно Навигатор, где нужно в левой части выбрать требуемый нам лист (Продажи), а в правой отобразится его содержимое:
Если нажать в правом нижнем углу этого окна кнопку Загрузить (Load), то таблица будет сразу импортирована на лист в исходном виде. Для одиночного файла — это хорошо, но нам нужно загрузить много таких файлов, поэтому мы пойдем немного другим путем и жмем кнопку Правка (Edit). После этого должен в отдельном окне отобразиться редактор запросов Power Query с нашими данными из книги:
Это очень мощный инструмент, позволяющий «допилить» таблицу под нужный нам вид. Даже поверхностное описание всех его функций заняло бы под сотню страниц, но, если совсем кратко, то с помощью этого окна можно:
- отфильтровывать ненужные данные, пустые строки, строки с ошибками
- сортировать данные по одному или нескольким столбцам
- избавляться от повторов
- делить слипшийся текст по столбцам (по разделителям, количеству символов и т.д.)
- приводить текст в порядок (удалять лишние пробелы, исправлять регистр и т.д.)
- всячески преобразовывать типы данных (превращать числа как текст в нормальные числа и наоборот)
- транспонировать (поворачивать) таблицы и разворачивать двумерные кросс-таблицы в плоские
- добавлять к таблице дополнительные столбцы и использовать в них формулы и функции на встроенном в Power Query языке М.
- …
Для примера, давайте добавим к нашей таблице столбец с текстовым названием месяца, чтобы потом проще было строить отчеты сводных таблиц. Для этого щелкните правой кнопкой мыши по заголовку столбца Дата и выберите команду Дублировать столбец (Duplicate Column), а затем щелкните правой кнопкой мыши по заголовку появившегося столбца-дубликата и выберите команды Преобразование — Месяц — Название месяца:
Должен образоваться новый столбец с текстовыми названиями месяца для каждой строки. Дважды щелкнув по заголовку столбца, его можно переименовать из Копия Дата в более удобное Месяц, например.
Если в каких-то столбцах программа не совсем корректно распознала тип данных, то ей можно помочь, щелкнув по значку формата в левой части каждого столбца:
Исключить строки с ошибками или пустые строки, а также ненужных менеджеров или заказчиков можно с помощью простого фильтра:
Причем все выполненные преобразования фиксируются в правой панели, где их всегда можно откатить (крестик) или изменить их параметры (шестеренка):
Легко и изящно, не правда ли?
Шаг 2. Преобразуем наш запрос в функцию
Чтобы впоследствии повторить все сделанные преобразования данных для каждой импортируемой книги, нужно преобразовать наш созданный запрос в функцию, которая затем будет применяться, по очереди, ко всем нашим файлам. Сделать это, на самом деле, очень просто.
В редакторе запросов перейдите на вкладку Просмотр и нажмите кнопку Расширенный редактор (View — Advanced Editor). Должно открыться окно, где все наши предыдущие действия будут записаны в виде кода на языке М. Обратите внимание, что в коде жестко прописан путь к файлу, который мы импортировали для примера:
Теперь аккуратно вносим пару правок:
Смысл их прост: первая строка (filepath)=> превращает нашу процедуру в функцию с аргументом filepath, а ниже мы меняем фиксированный путь на значение этой переменной.
Все. Жмем на Готово и должны увидеть вот это:
Не пугайтесь, что пропали данные — на самом деле все ОК, все так и должно выглядеть Мы успешно создали нашу пользовательскую функцию, где запомнился весь алгоритм импорта и обработки данных без привязки к конкретному файлу. Осталось дать ей более понятное имя (например getData) на панели справа в поле Имя и можно жать Главная — Закрыть и загрузить (Home — Close and Load). Обратите внимание, что в коде жестко прописан путь к файлу, который мы импортировали для примера.. Вы вернетесь в основное окно Microsoft Excel, но справа должна появиться панель с созданным подключением к нашей функции:
Шаг 3. Собираем все файлы
Все самое сложное — позади, осталась приятная и легкая часть. Идем на вкладку Данные — Создать запрос — Из файла — Из папки (Data — New Query — From file — From folder) или, если у вас Excel 2010-2013, аналогично на вкладку Power Query. В появившемся окне указываем папку, где лежат все наши исходные файлы-города и жмем ОК. Следующим шагом должно открыться окно, где будут перечислены все найденные в этой папке (и ее подпапках) файлы Excel и детализация по каждому из них:
Жмем Изменить (Edit) и опять попадаем в знакомое окно редактора запросов.
Теперь нужно добавить к нашей таблице еще один столбец с нашей созданной функцией, которая «вытянет» данные из каждого файла. Для этого идем на вкладку Добавить столбец — Пользовательский столбец (Add Column — Add Custom Column) и в появившемся окне вводим нашу функцию getData, указав для ее в качестве аргумента полный путь к каждому файлу:
После нажатия на ОК созданный столбец должен добавиться к нашей таблице справа.
Теперь удалим все ненужные столбцы (как в Excel, с помощью правой кнопки мыши — Удалить), оставив только добавленный столбец и столбец с именем файла, т.к. это имя (а точнее — город) будет полезно иметь в итоговых данных для каждой строки.
А теперь «вау-момент» — щелкнем мышью по значку со своенным стрелками в правом верхнем углу добавленного столбца с нашей функцией:
… снимаем флажок Использовать исходное имя столбца как префикс (Use original column name as prefix)и жмем ОК. И наша функция подгрузит и обработает данные из каждого файла, следуя записанному алгоритму и собрав все в общую таблицу:
Для полной красоты можно еще убрать расширения .xlsx из первого столбца с именами файлов — стандартной заменой на «ничего» (правой кнопкой мыши по заголовку столбца — Заменить) и переименовать этот столбец в Город. А также подправить формат данных в столбце с датой.
Все! Жмем на Главной — Закрыть и загрузить (Home — Close & Load). Все собранные запросом данные по всем городам будут выгружены на текущий лист Excel в формате «умной таблицы»:
Созданное подключение и нашу функцию сборки не нужно никак отдельно сохранять — они сохраняются вместе с текущим файлом обычным образом.
В будущем, при любых изменениях в папке (добавлении-удалении городов) или в файлах (изменение количества строк) достаточно будет щелкнуть правой кнопкой мыши прямо по таблице или по запросу в правой панели и выбрать команду Обновить (Refresh) — Power Query «пересоберет» все данные заново за несколько секунд.
P.S.
Поправка. После январских обновлений 2017 года Power Query научился собирать Excel’евские книги сам, т.е. не нужно больше делать отдельную функцию — это происходит автоматически. Таким образом второй шаг из этой статьи уже не нужен и весь процесс становится заметно проще:
- Выбрать Создать запрос — Из файла — Из папки — Выбрать папку — ОК
- После появления списка файлов нажать Изменить
- В окне редактора запросов развернуть двойной стрелкой столбец Binary и выбрать имя листа, который нужно взять из каждого файла
И все! Песня!
Ссылки по теме
- Редизайн кросс-таблицы в плоскую, подходящую для построения сводных таблиц
- Построение анимированной пузырьковой диаграммы в Power View
- Макрос для сборки листов из разных файлов Excel в один