Добрый день.
Вопрос такой - есть около 200-300 файлов с несколькими листами на которых даны перечни товаров на 50-100 тыс строк.
Требуется написать макрос чтобы собрать со всех листов всех файлов) названия товара без повторов (а они процентов на 20-40% могут повторяться)
Пробовал без использования массивов - работает очень медленно (суммарно объем данных может быть 5-10 млн строк)
С массивами дошел до задания массивов хранения результата:
....
задании рабочего массива в котором произвожу работу с открытым по очереди файлом
Если просто копировать целиком из открытого файла таблицу в приготовленные массивы проблем нет (с отбором по статичной маске тоже).
А как на этом этапе организовать контроль наличия в имеющемся собранном наборе данных данных из новой таблицы чтобы не копировать то что уже там есть?
Нашел поиском тему с примером:
но пока без помощи не разобрался насколько это подходит под мою задачу.
Спасибо.
Вопрос такой - есть около 200-300 файлов с несколькими листами на которых даны перечни товаров на 50-100 тыс строк.
Требуется написать макрос чтобы собрать со всех листов всех файлов) названия товара без повторов (а они процентов на 20-40% могут повторяться)
Пробовал без использования массивов - работает очень медленно (суммарно объем данных может быть 5-10 млн строк)
С массивами дошел до задания массивов хранения результата:
Код |
---|
Dim arrM2(1048576, 14) Dim arrM3(1048576, 14) |
....
задании рабочего массива в котором произвожу работу с открытым по очереди файлом
Код |
---|
Dim arrM1() arrM1 = Range(Cells(1, 1), Cells(1048576, 20)) |
Если просто копировать целиком из открытого файла таблицу в приготовленные массивы проблем нет (с отбором по статичной маске тоже).
А как на этом этапе организовать контроль наличия в имеющемся собранном наборе данных данных из новой таблицы чтобы не копировать то что уже там есть?
Нашел поиском тему с примером:
Код |
---|
Sub test() Dim myArray As Variant myArray = Array("a", "c", "d") Dim word As Variant For Each word In myArray Sheet1.Range("A1:A11").Find(word).Interior.ColorIndex = 15 Next word End Sub |
но пока без помощи не разобрался насколько это подходит под мою задачу.
Спасибо.