Выборочный импорт записей (Microsoft Excel)
Оле столкнулся с проблемой при импорте информации в книгу Excel. Кажется, что файлы, которые ему нужно импортировать, — это текстовые файлы, которые обычно содержат тысячи и тысячи записей. Однако Ole не нуждается в большинстве входных строк и обычно избавляется от них после импорта записей в Excel. Оле ищет способ избавиться от ненужных записей в процессе импорта, чтобы у него было меньше работы, когда данные находятся в его книге.
Есть несколько разных способов решения этой проблемы. Одно из решений — использовать Access в качестве первого шага импорта. Access легко обработает тысячи записей, которые вы хотите импортировать, даже если их больше, чем вы можете импортировать в Excel. Вы можете импортировать файл в Access, отфильтровать нежелательные записи, а затем экспортировать полученную таблицу как книгу Excel.
Однако лучшим решением может быть полный обход фильтров импорта Excel. Это отлично работает, если ваши данные импорта, такие как данные Оле, находятся в текстовом файле. Вы можете легко написать процедуру импорта в VBA и позволить ей обработать файл импорта. Например, рассмотрим следующий макрос:
Sub Import() Dim sFile As String Dim sUnwanted As String Dim sDelim As String Dim iRow As Integer Dim iCol As Integer Dim bBadRecord As Boolean Dim iTemp As Integer sFile = "d:\data.txt" sUnwanted = "bad text" sDelim = "," Open sFile For Input As #1 iRow = 1 While Not EOF(1) 'Scan file line by line iCol = 1 Line Input #1, sBuffer ' Check to see if should ignore record bBadRecord = Instr(sBuffer, sUnwanted) If Not bBadRecord Then iTemp = Instr(sBuffer, sDelim) While iTemp > 0 With Application.Cells(iRow, iCol) .NumberFormat = "@" 'Text formatting .Value = Left(sBuffer, iTemp-1) End With iCol = iCol + 1 sBuffer = Mid(sBuffer, iTemp+1, Len(sBuffer)) iTemp = Instr(sBuffer, sDelim) Wend If Len(sBuffer) > 0 Then With Application.Cells(iRow, iCol) .NumberFormat = "@" 'Text formatting .Value = sBuffer End With End If iRow = iRow + 1 End If Wend Close #1 End Sub
Этот макрос открывает файл данных и считывает каждую запись в файле. Он проверяет запись, чтобы убедиться, что ее можно импортировать, а затем разделяет ее на части на основе разделителя и вставляет информацию в текущий рабочий лист. Вы можете изменить имя файла данных (переменная sFile), текст, указывающий на плохую запись (переменная sUnwanted) и разделитель (переменная sDelim).
В качестве примера предположим, что у вас есть файл данных с именем Customers.txt. Этот файл содержит все ваши записи о клиентах, но вы не хотите импортировать записи о клиентах с адресами в США. Кроме того, записи в файле данных используют символ табуляции между каждым полем. В этом случае вам нужно будет только внести следующие изменения в переменные в начале макроса:
sFile = "d:\Customers.txt" sUnwanted = "United States" sDelim = Chr(9)
После запуска макроса текущий рабочий лист будет содержать только нужные данные.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (8491) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Selectively_Importing_Records [Выборочный импорт записей]
.