Импорт огромных файлов данных

В Excel есть ограничение на количество строк на листе – до 65 535. Однако вполне возможно, что файл необработанных данных содержит больше, чем это количество строк. Если вам нужно импортировать этот файл в Excel, это может показаться практически невозможным без обновления до Excel 2007 или более поздней версии. (В этих более поздних версиях превышено ограничение в 65 535 строк.) Однако есть несколько вещей, которые вы можете сделать.

Одна из возможностей – сделать копии необработанного текстового файла (того, который вы хотите импортировать ), а затем уменьшите размер каждого файла. Например, если у вас есть в общей сложности 110 000 строк, которые необходимо импортировать в 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 Открыть «C: MyDir MyFile.txt» для ввода как # 5 Не использовать 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) Рабочие листы («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 # 5End Sub

Макрос предполагает, что у вас уже есть достаточно листов в вашей книге для хранения данных, и что они пронумерованы Sheet1, Sheet2, Sheet3 и т. д. Две переменные, которые вы хотите проверить в программе: Переустановите настройки sDelim и MaxSize. Первый указывает, какой символ используется в качестве разделителя полей в считываемой информации. Второй определяет максимальное количество строк, которое вы хотите на каждом листе. (Не устанавливайте MaxSize больше, чем позволяет ваша версия Excel.)

Наконец, обратите внимание, что макрос открывает текстовый файл MyFile.txt. Вы захотите изменить этот оператор Open, чтобы он открывал реальный исходный файл, который вы хотите импортировать..

Источник: frestage.ru

Бытовой вопрос