SvetaS | Дата: Среда, 16.09.2015, 19:29 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 2
Статус: 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
АУ! КТО-ТО МОЖЕТ ПОМОЧЬ? ПОМОГИТЕ ПОЖАЛУЙСТА
(Ору, так ищу ответ с мая месяца 2015. Нет сил уже…..)
Добавлено (16.09.2015, 19:24) ---------------------------------------------
ОШИБКУ ВЫДАЁТ, когда объявляем новый массив с количество строк увеличенным на необходимое, для разложения строк содержащих ";"
Добавлено (16.09.2015, 19:29) ---------------------------------------------
Сообщение отредактировал SvetaS - Четверг, 17.09.2015, 07:18 |
|
| |
dsb75 | Дата: Среда, 16.09.2015, 23:11 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 133
Статус: Offline
| SvetaS, здравствуйте. А кто даёт такой файл на входе? Откуда он берётся?
|
|
| |
SvetaS | Дата: Четверг, 17.09.2015, 07:17 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 2
Статус: Offline
| dsb75, НАЧАЛЬНИК ДАЁТ...
|
|
| |
irakitin2014 | Дата: Четверг, 17.09.2015, 08:10 | Сообщение # 4 |
Генерал-майор
Группа: Модераторы
Сообщений: 312
Статус: Offline
| Просто для информации: Обсуждается здесь не заметил сразу, что ТС сама упомянула об этом
для спасибов ЯД 41001877306852
Сообщение отредактировал irakitin2014 - Четверг, 17.09.2015, 08:18 |
|
| |
dsb75 | Дата: Четверг, 17.09.2015, 08:21 | Сообщение # 5 |
Генералиссимус
Группа: Администраторы
Сообщений: 133
Статус: Offline
| SvetaS, предложите поменять его формат на что-то нормальное, структурированное. Вижу вы начали общение на ExcelWorld, продолжайте. Вообще, задача достаточно большая, боюсь бесплатно никто вам не поможет. Только подскажут куда копать, а вам, судя по всему, этого будет мало.
|
|
| |
dsb75 | Дата: Четверг, 17.09.2015, 08:30 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 133
Статус: Offline
| Игорь, я глянул на тред на Планете - жесть
|
|
| |
irakitin2014 | Дата: Четверг, 17.09.2015, 08:54 | Сообщение # 7 |
Генерал-майор
Группа: Модераторы
Сообщений: 312
Статус: Offline
| День Добрый Денис.Это да!!!!.Кстати не думал завести ветку Работа?Как раз тот случай ЗЫ . ИМХО. Зря убрал тему из ветки VBA.
для спасибов ЯД 41001877306852
Сообщение отредактировал irakitin2014 - Четверг, 17.09.2015, 08:56 |
|
| |