Импорт огромных файлов данных (Microsoft Excel)
В Excel есть ограничение на количество строк на листе — до 65 535. Однако вполне возможно, что файл необработанных данных содержит больше, чем это количество строк. Если вам нужно импортировать этот файл в Excel, это может показаться практически невозможным без обновления до Excel 2007 или более поздней версии. (Эти более поздние версии превысили ограничение в 65 535 строк.) Однако есть несколько вещей, которые вы можете сделать.
Одна из возможностей — сделать копии необработанного текстового файла (того, который вы хотите импортировать), а затем уменьшить размер каждого файла. Например, если у вас есть в общей сложности 110000 строк, которые необходимо импортировать в Excel, и вы работаете с ограничением в 65 535 строк, вы можете сделать две копии необработанного текстового файла. Удалите вторую половину первого текстового файла и первую половину второго. Таким образом, вы можете импортировать первый файл (теперь 55 000 строк) в один рабочий лист, а второй файл (также 55 000 строк)
во второй.
Если вы не хотите разбивать входные файлы, вы можете рассмотреть возможность импорта файла в Access. В отличие от Excel, Access практически не имеет ограничений на количество строк, которые вы можете импортировать. Затем вы можете либо работать с файлом в Access, либо экспортировать части файла для использования в Excel.
Наконец, вы можете использовать макрос для импорта записей в большом исходном файле. Есть много способов сделать это, но основная идея любого подхода — получить каждую строку из исходного файла и поместить ее в новую строку рабочего листа. Макрос должен отслеживать, сколько строк он помещает, и при необходимости переключаться на новый рабочий лист.
Public Sub LoadFile() Dim strLine As String Dim I As Long Dim J As Long Dim iLen As Integer Dim iSh As Integer Dim lL As Long Dim sDelim As String Dim MaxSize As Long sDelim = Chr(9) MaxSize = 65000 I = 0 Open "C:\MyDir\MyFile.txt" For Input As #5 Do While Not EOF(5) iSh = (I / MaxSize) + 1 lL = I Mod MaxSize Line Input #5, strLine If Right(strLine, 1) <> sDelim Then strLine = Trim(strLine) & sDelim End If J = 0 Do While Len(strLine) > 1 iLen = InStr(strLine, sDelim) Worksheets("Sheet" & iSh).Offset(lL, J).Value = _ Trim(Left(strLine, iLen - 1)) strLine = Trim(Right(strLine, Len(strLine) - iLen)) J = J + 1 Loop I = I + 1 Loop Close #5 End Sub
Макрос предполагает, что у вас уже есть достаточно листов в вашей книге для хранения данных, и что они пронумерованы Sheet1, Sheet2, Sheet3 и т. Д. Две переменные, которые вы хотите проверить в программе, — это настройки sDelim и MaxSize. Первый указывает, какой символ используется в качестве разделителя полей в считываемой информации. Второй указывает максимальное количество строк на каждом листе. (Не устанавливайте MaxSize больше, чем позволяет ваша версия Excel.)
Наконец, обратите внимание, что макрос открывает текстовый файл MyFile.txt. Вы захотите изменить этот оператор Open, чтобы он открывал реальный исходный файл, который вы хотите импортировать.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2533) применим к Microsoft Excel 97, 2000, 2002 и 2003.