Как разбить огромный csv файл - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день, помогите решить задачу: есть ексель файл на 5000 строк и есть огромный csv файл на 1,16 Гбайт, нужно найти совпадающие значения в этих файлах пробовал через функцию ВПР находится все до 1000000 строк, а больше ексель не показывает так как стоит ограничение в этом пределе, а сам csv файл предположительно на 50000000 строк я хочу его разбить на 50 меньших файлов и по отдельности произвести поиск совпадающих строк, как это можно сделать? Или подскажите пожалуйста другой способ найти совпадающие строки с моим маленьким файлом и этим огромнейшим csv файлом

Решение задачи: «Как разбить огромный csv файл»

textual
Листинг программы
  1. Sub qwert()
  2. Dim sl: Set sl = CreateObject("scripting.dictionary") '
  3. Dim r, ri, lr, m(), t
  4.  
  5. '''*********************просто заполнение уникальными значениями.
  6. 'Randomize
  7. 'For r = 1 To 5000
  8. '    Do
  9. '        t = Int(1000001 * Rnd)
  10. '    Loop While sl.exists(t)
  11. '    sl(t) = r
  12. 'Next r
  13. ' ActiveSheet.[a1].Resize(sl.Count) = Application.Transpose(sl.keys)
  14. ''***************************************
  15.  
  16. With ActiveSheet
  17.     lr = .Cells(.Rows.Count, 1).End(xlUp).Row
  18.     m = .[a1].Resize(lr, 2).Value
  19.     For r = 1 To 5000
  20.         sl(m(r, 1)) = r 'запоминаем значение и номер строки в словарь
  21.    Next r
  22.  
  23. 'словарь заполнен уникальными. дальше работа с файлом.
  24. 'Проверять не на чём. моделировать лениво. Примерно так:
  25.  
  26.  Open "c:\temp\myfile1.csv" For Input As #1 'огромный файл
  27.  
  28. 'цикл выполняется, пока конец файла не достигнут
  29.        Do Until EOF(1)
  30.            'при каждом вызове оператора Line Input он записывает в
  31.           'переменную новою строку
  32.          Line Input #1, t
  33.         '  тут с переменной t возможно надо что-то сделать
  34.            t = t
  35.         '    и потом проверить наличие в словаре
  36.            If sl.exists(t) Then ' если в словаре есть
  37.        '    например можно поставить метку в массив
  38.                ri = sl(t) '
  39.                m(ri, 2) = "есть такое" '
  40.            End If
  41.         Loop
  42.     Close
  43.      .[a1].Resize(lr, 2) = m ' массив с результатом вывалить на лист
  44. End With
  45.  
  46. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут