Как разбить огромный 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