Импорт подмножества записей (Microsoft Excel)
Гордон задается вопросом, как он может импортировать подмножество текстового файла в Excel в зависимости от значения конкретного поля. Например, он может захотеть импортировать только те записи, которые содержат «y» в столбце 5 каждой записи в текстовом файле.
Есть несколько способов подойти к этой задаче. Во-первых, вы можете просто импортировать весь текстовый файл, отсортировать записи и удалить те, которые вам не нужны. Это, пожалуй, самый простой вариант, если вам нужно обработать только один файл, и весь файл может поместиться на одном рабочем листе.
Другой подход — использовать макрос. (Это тот, который я считаю самым быстрым и простым, особенно если вам нужно немного импортировать тот же тип файла.) Макрос может открыть текстовый файл, прочитать каждую строку, а затем определить, информация в этой строке должна быть добавлена в рабочий лист или нет. Вот пример, который откроет файл с именем «MyCSVFile.txt» и затем вставит данные в новый рабочий лист, начиная с первой строки.
Sub ReadMyFile() Dim R As Integer Dim C As Integer Dim sDelim As String Dim sRaw As String Dim ReadArray() As String sDelim = "," ' Set to vbTab if tab-delimited file Worksheets.Add Open "myCSVFile.txt" For Input As #1 R = 1 Do While Not EOF(1) Line Input #1, sRaw ReadArray() = Split(sRaw, sDelim, 20, vbTextCompare) If ReadArray(4) = "y" Then For C = 0 To UBound(ReadArray) Cells(R, C + 1).Value = ReadArray(C) Next C R = R + 1 End If Loop Close #1 End Sub
Чтобы использовать макрос, просто измените имя файла, чтобы оно соответствовало файлу, который вы хотите обработать. Вы также захотите изменить переменную sDelim, чтобы убедиться, что она соответствует тому, что используется в качестве разделителя в ваших записях. Как написано, предполагается, что разделитель — это запятая (которая будет в файле CSV), но вы можете изменить его на vbTab, если вы действительно работаете с файлом с разделителями табуляции. После завершения макроса на новом листе будут только те записи, которые содержат один символ «y» в нижнем регистре.
Другой подход — использовать функцию Power Query в Excel. Это бесплатная надстройка от Microsoft, доступная для некоторых вариантов Excel 2010 и Excel 2013. Вы можете загрузить (и узнать, какие варианты поддерживаются) по следующему адресу:
http://www.microsoft.com/en-us/download/details.aspx?id=39379
Если вы используете Excel 2016, то Power Query встроен в программу.
Если у вас установлен или доступен Power Query в вашей версии Excel, и эта версия Excel является Excel 2010 или Excel 2013, выполните следующие действия:
-
Откройте вкладку Power Query на ленте.
-
Щелкните Из файла | Из CSV. Excel отображает диалоговое окно «Обзор значений, разделенных запятыми», которое очень похоже на стандартное диалоговое окно «Открыть».
-
Найдите и выберите файл CSV, который вы хотите импортировать в Excel.
-
Щелкните Открыть. Excel загружает данные в окно Power Query с кнопками фильтрации, доступными для каждого поля.
Если вы используете Excel 2016 или более позднюю версию, действия немного отличаются:
-
Откройте вкладку «Данные» на ленте.
-
Щелкните инструмент «Новый запрос» (Excel 2016) или инструмент «Получить данные» (более поздние версии Excel) в группе «Получить и преобразовать». Excel отображает некоторые параметры.
-
Щелкните Из файла | Из текста / CSV. Excel отображает диалоговое окно «Импорт данных», которое очень похоже на стандартное диалоговое окно «Открыть».
-
Найдите и выберите файл CSV, который вы хотите импортировать в Excel.
-
Щелкните Открыть. Excel загружает данные в окно Power Query с кнопками фильтрации, доступными для каждого поля.
На этом этапе — независимо от того, какую версию Excel вы используете — вы можете использовать элементы управления, чтобы указать запрос (то есть, настроить определение того, какие записи должны быть импортированы). При нажатии кнопки «Закрыть и загрузить» записи извлекаются из файла, и запрос можно сохранить для использования в будущем.
Четвертый подход — использовать Microsoft Query. Для этого вам нужно будет выполнить эту очень длинную серию шагов. (Никто никогда не говорил, что Microsoft хочет упростить использование Microsoft Query, и вы согласитесь, пройдя эти шаги.)
-
Откройте вкладку «Данные» на ленте.
-
Щелкните инструмент «Получить данные» в группе «Получить и преобразовать данные», затем выберите «Из других источников» (в группе «Получить внешние данные» более ранних версий Excel), а затем выберите «Из Microsoft Query». Excel отображает диалоговое окно «Выбор источника данных». (См. Рис. 1.)
-
Выберите параметр «Новый источник данных» и нажмите «ОК». Excel отображает диалоговое окно «Создать новый источник данных». (См. Рис. 2.)
-
Укажите имя для источника данных, например «Файлы CSV».
-
В раскрывающемся списке для пункта 2 выберите Microsoft Text Driver.
-
Щелкните Подключить. Excel отображает диалоговое окно «Настройка текста ODBC».
-
Немедленно нажмите ОК, чтобы закрыть диалоговое окно.
-
Щелкните OK, чтобы закрыть диалоговое окно Create New Data Source. Excel обновляет диалоговое окно «Выбор источника данных», добавляя в него имя, указанное на шаге 4.
-
Выберите только что созданный источник данных и нажмите OK. Excel отображает предупреждение о том, что в источнике нет таблиц данных. (Это нормально; вы ничего не определили.)
-
Нажмите ОК, чтобы закрыть предупреждение. Excel отображает диалоговое окно мастера запросов.
-
Поскольку вы ничего не можете сделать с пустым диалоговым окном мастера запросов, нажмите кнопку «Отмена». Excel отображает предупреждение с вопросом, хотите ли вы остаться в Microsoft Query.
-
Щелкните Да. Excel отображает диалоговое окно «Добавить таблицу».
-
Используя элементы управления в диалоговом окне, найдите и выберите файл CSV.
-
Щелкните кнопку Добавить. Excel выглядит так, как будто ничего не делает, но на самом деле он добавил ссылку на файл CSV.
-
Нажмите кнопку «Закрыть», чтобы закрыть диалоговое окно «Добавить таблицу». Ваш CSV-файл отображается в окне Microsoft Query.
-
Используя список полей для файла CSV, перетащите каждое поле, которое вы хотите импортировать, на рабочий лист в нижнюю область окна Microsoft Query. (Если вам нужны все поля, просто перетащите звездочку в нижнюю часть окна.)
-
Щелкните Критерии | Добавить критерии. Excel отображает диалоговое окно «Добавить критерии». (См. Рис. 3.)
-
Используя элементы управления в диалоговом окне, укажите, что вы хотите, чтобы поле 5 (независимо от его имени) было равно «y».
-
Нажмите кнопку «Добавить», чтобы добавить критерии к запросу.
-
Нажмите «Закрыть», чтобы закрыть диалоговое окно «Добавить критерии».
-
Щелкните Файл | Вернуть данные в Microsoft Excel. Excel отображает диалоговое окно «Импорт данных». (См. Рис. 4.)
-
При необходимости измените настройки в диалоговом окне, чтобы указать, как вы хотите, чтобы данные CSV возвращались в Excel.
-
Щелкните ОК.
(Сказал вам, что шаги были длинными.) Теперь вы можете работать с данными в Excel и, при желании, использовать инструменты на вкладке «Дизайн» на ленте, чтобы обновить данные из файла CSV.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (10384) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.