[ Регистрация · Вход · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: irakitin2014  
Нечёткий поиск на 300 000 стр в Excel VBA -ош Out of Memory
SvetaSДата: Среда, 16.09.2015, 19:29 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 2
Репутация: 0
Статус: Offline
Добрый Вечер!
Реализую задачу нечёткого поиска на VBA из Excel 2016  на 300 000 строках
на маленьком объёме вроде работало, но файл в 300 000 строк. Получаю ОШИБКУ - "RunTime Error 7 - Out of Memory"

Добавлено (16.09.2015, 19:22)
---------------------------------------------
ОПИСАНИЕ ЗАДАЧИ
Есть файл - пример привожу в файле "Дано " на 5 стоках, так как размер данных большой. Всего строк в файле от 150 000 до 300 000 строк.
В файле, в колонке "описание товара" приводится описание различного товара через ";".
необходимо: 1) строки содержащие символ ";" разложить "по строкам" вниз (по строкам, а не по столбцам, т.е. увеличив число строк в файле )
2) количество написанное напротив описания товара в строках с ";" внести в колонку "Кол-во товара"
3) вес написанный напротив упаковки продукции в описании товара внести в отдельную колонку - например 100 гр, или 1,5 кг
4) если указано количество продаж, сделать перевод строки в кг
5) каждой строке, после разложения строк содержащих ";" , по ключевому слову присвоить группу с названием товара в отдельной колонке
- чтобы можно было понять что за товар находится в описании строки
группы строк выделяются по информации находящейся в описании товара:
- Марки компании
- Марки бренда Например, Снежный Краб, Крабыч, Своя Линия, Розумна цена, и т.д.
- типа продукции например, Икра мойвы,
- группы продукции 1, например Икра, Краб Палочки, и т.д.
- группы продукции 2, например Морепродукты, Продукты из сурими, и т.д.
- состояния продукции (кулинарной обработки) например: в масле, по корейски, по мексикански, охлаждённая, замороженная и т.д.
- упаковки продукции (пластик, вакумная упаковка, пресервы, железная банка и т.д.)
- количества граммов продукции - вес выделить в кг отдельно, если продукция в штуках

6) после присвоения группы - создать сводную по группам - ДЛЯ ПРОВЕРКИ НАБОРА ГРУПП

7) создать отчёт
8) найдя новые уникальные элементы в файле "Дано" (КОТОРЫХ ещё нет в файле Справочники), добавить их в соответствующий справочник (в соответствующую группу справочника)- ОБНОВИТЬ СЛОВАРИ. 

Всего строк до 300 000 в таблице. Время на обработку до 30 минут. Памяти 8 ГБ, win 7, Excel 2016 .Ручной вариант обработки не пройдёт.....Наименования продуктов постоянно меняются. Ассортимент меняется ежедневно.
Для Любителей Баз данных - да загрузка в базы данных есть, но только после сортировки строк по группам, так как ни в Access, ни в Oracle, ни в 1С - нет такого мощного инструмента по работе со строками.

Предложения об использовании баз данных принимаются только вместе с описанием данного алгоритма обработки на языке той базы, куда будем загружать (Т.Е. С ОТВЕТАМИ НА ВОПРОСЫ КАК? Здесь весь вопрос какую обработку может тянуть Excel? И какую обработку делаем в базе (какие текстовые функции может использовать язык базы......)? )......

В ЧЁМ ПРОБЛЕММА
ошибку даёт Redim на 111 533 строках
на объёме маленьком ошибку не даёт (до 100 строк и до 100 столбцов) - работает нормально......

ОШИБКУ ВЫДАЁТ, когда объявляем новый массив с количество строк увеличенным на необходимое, для разложения строк содержащих ";"

в файле справочники на странице "гр_д_соп" - показаны все принципы групп
принцип определения веса в столбце "описание товара" - цифры перед"г " / "кг "
граммы - Если "г " является одиночной или вплотную к цифрам
килограммы - Если "кг "является одиночной или вплотную к цифрам
вес- цифра стоящая рядом (через пробел- или несколько пробелов) или вплотную с "г " или "кг "

в файле - справочники -на странице "Крым" - это города которые исключаем из рассмотрения по колонке город. - т.е. если в строке есть город по колонке "Город" с таким названием , то даная строка удаляется из файла "Дано"

У меня был реализован алгоритм:
1) разложения строки (по причине ";")
2) поиск похожести слов (посимвольный перебор)

и на этом была проблема - "RunTime Error 7 - Out of Memory",
3) сопоставления фраз

Проблема заключалась куда сложить промежуточные данные.....

Согласно рекомендациям на другом форуме от The_Prist - пробывала грузить частями, используя функцию SplitArray деления по колекциям описанную на сайте EducatedFool
Так же пробывала через ADO - описала -что пробывала на http://www.excelworld.ru/forum/3-4357-4#157100

АУ! КТО-ТО МОЖЕТ ПОМОЧЬ?
ПОМОГИТЕ ПОЖАЛУЙСТА  eek cry sad

(Ору, так ищу ответ с мая месяца 2015. Нет сил уже…..)

Добавлено (16.09.2015, 19:24)
---------------------------------------------


ОШИБКУ ВЫДАЁТ, когда объявляем новый массив с количество строк увеличенным на необходимое, для разложения строк содержащих ";"

Добавлено (16.09.2015, 19:29)
---------------------------------------------

Прикрепления: 5527359.xlsx (14.5 Kb) · 8138724.xlsx (57.1 Kb) · 0141671.zip (20.0 Kb) · 0339820.zip (6.8 Kb) · 8255525.zip (8.5 Kb)


Сообщение отредактировал SvetaS - Четверг, 17.09.2015, 07:18
 
dsb75Дата: Среда, 16.09.2015, 23:11 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 133
Репутация: 2
Статус: Offline
SvetaS, здравствуйте.
А кто даёт такой файл на входе? Откуда он берётся?
 
SvetaSДата: Четверг, 17.09.2015, 07:17 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 2
Репутация: 0
Статус: Offline
dsb75, НАЧАЛЬНИК ДАЁТ...
 
irakitin2014Дата: Четверг, 17.09.2015, 08:10 | Сообщение # 4
Генерал-майор
Группа: Модераторы
Сообщений: 312
Репутация: 6
Статус: Offline
Просто для информации:
Обсуждается здесь
не заметил сразу, что ТС сама упомянула об этом  sad



для спасибов ЯД 41001877306852


Сообщение отредактировал irakitin2014 - Четверг, 17.09.2015, 08:18
 
dsb75Дата: Четверг, 17.09.2015, 08:21 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 133
Репутация: 2
Статус: Offline
SvetaS
предложите поменять его формат на что-то нормальное, структурированное.
Вижу вы начали общение на ExcelWorld, продолжайте.
Вообще, задача достаточно большая, боюсь бесплатно никто вам не поможет. Только подскажут куда копать, а вам, судя по всему, этого будет мало.
 
dsb75Дата: Четверг, 17.09.2015, 08:30 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 133
Репутация: 2
Статус: Offline
Игорь, я глянул на тред на Планете - жесть smile
 
irakitin2014Дата: Четверг, 17.09.2015, 08:54 | Сообщение # 7
Генерал-майор
Группа: Модераторы
Сообщений: 312
Репутация: 6
Статус: Offline
День Добрый Денис.Это да!!!!.Кстати не думал завести ветку Работа?Как раз тот случай
ЗЫ . ИМХО. Зря убрал тему из ветки VBA.



для спасибов ЯД 41001877306852


Сообщение отредактировал irakitin2014 - Четверг, 17.09.2015, 08:56
 
  • Страница 1 из 1
  • 1
Поиск: