Как разбить огромный csv файл - VBA
Формулировка задачи:
Добрый день, помогите решить задачу: есть ексель файл на 5000 строк и есть огромный csv файл на 1,16 Гбайт, нужно найти совпадающие значения в этих файлах пробовал через функцию ВПР находится все до 1000000 строк, а больше ексель не показывает так как стоит ограничение в этом пределе, а сам csv файл предположительно на 50000000 строк я хочу его разбить на 50 меньших файлов и по отдельности произвести поиск совпадающих строк, как это можно сделать? Или подскажите пожалуйста другой способ найти совпадающие строки с моим маленьким файлом и этим огромнейшим csv файлом
Решение задачи: «Как разбить огромный csv файл»
textual
Листинг программы
Sub qwert() Dim sl: Set sl = CreateObject("scripting.dictionary") ' Dim r, ri, lr, m(), t '''*********************просто заполнение уникальными значениями. 'Randomize 'For r = 1 To 5000 ' Do ' t = Int(1000001 * Rnd) ' Loop While sl.exists(t) ' sl(t) = r 'Next r ' ActiveSheet.[a1].Resize(sl.Count) = Application.Transpose(sl.keys) ''*************************************** With ActiveSheet lr = .Cells(.Rows.Count, 1).End(xlUp).Row m = .[a1].Resize(lr, 2).Value For r = 1 To 5000 sl(m(r, 1)) = r 'запоминаем значение и номер строки в словарь Next r 'словарь заполнен уникальными. дальше работа с файлом. 'Проверять не на чём. моделировать лениво. Примерно так: Open "c:\temp\myfile1.csv" For Input As #1 'огромный файл 'цикл выполняется, пока конец файла не достигнут Do Until EOF(1) 'при каждом вызове оператора Line Input он записывает в 'переменную новою строку Line Input #1, t ' тут с переменной t возможно надо что-то сделать t = t ' и потом проверить наличие в словаре If sl.exists(t) Then ' если в словаре есть ' например можно поставить метку в массив ri = sl(t) ' m(ri, 2) = "есть такое" ' End If Loop Close .[a1].Resize(lr, 2) = m ' массив с результатом вывалить на лист End With End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д