Страницы: Пред. 1 2
RSS
Извлечь названия и количества товара
 
Гугл - меня вот сюда послал - https://support.microsoft.com/ru-ru/help/210684/copying-worksheet-programmatically-causes-run-time-e...
 
что-то мне кажется это проблема в винде, надо попробовать дома запустить...
 
У меня другая задача- надо вытащить последнее значение, с помощью ВПР не получается, сортировать нельзя. Может кто посмотрит плиз? не могу допендрить пока
 
SAS888
М.б. ошибка из-за того что в первых 7 строках только по 1 позиции внесено, а в последних 2-х (9-й и 10-й) их значительно больше (33 и 44), м.б. тут причина...
Вопрос -писать на почту или здесь продолжать - вроде интерес есть к теме?
 
В начале Вы говорили что позиций до 10 штук, а сейчас 33 и 44, получается что SAS888 каждый раз переписывает макрос под изменяющиеся условия....
Для SAS888: может вариант сначала разбить текст по столбцам, а потом определить размер массива по самой большой колонке? и дальше уже по Вашему методу?
 
Manhill
Теперь ясно. Ошибка возникает в версиях Excel, которые ниже, чем 2010.  Проверил на Excel 2007 - получил ошибку. Это связано с тем, что  выгрузить на лист массив, элемент(ы) которого содержат более 911  символов невозможно. Можно забрать в массив, обработать, а выгружать на  лист только поэлементно.
В прикрепленном файле это реализовано.
Цитата
Дмитрий Тарковский написал:
может вариант сначала разбить текст по столбцам, а потом определить размер массива по самой большой колонке? и дальше уже по Вашему методу?
Макрос так и делает. От количества строк (столбцов) код макроса изменять не нужно. Но, теперь, для того, чтобы правильно разбить по столбцам исходный текст (поставить на место "_1.0_"), перед тем, как разбивать по столбцам, макрос забирает в массив "длинные" элементы, обрабатывает и выгружает на лист, что и вызывает ошибку в ранних (до 2010) версиях Excel.
Изменено: SAS888 - 22.04.2017 09:47:12
Чем шире угол зрения, тем он тупее.
 
Только сегодня смог потестить - описание прилагаю. Склоняюсь к необходимости переустановки Экселя на рабочем компе, дома все работало.
Попробовал 5 тысяч строк обработать - пишет ошибку 7 'Out of memory' в строке - Set x = Range(Cells(2, j + 1), Cells(i, k)): a = x.Value: k = 0
Образец большой - пошлю на почту.
 
Посмотрите пример во вложении.
1. Теперь большие файлы будут обрабатываться. Предварительная "чистка" происходит в ячейках столбца без использования массива.
2. Извлечение количества и ед. изм. сделал через регулярные выражения с гибким поиском количества. Должно помочь.
3. Обратите внимание на выделенную желтым цветом ячейку. В ней сначала прописано общее количество наименований, затем они расписываются по сериям. Макрос все суммирует и, естественно, получает вдвое больший результат. Как это различать?
Чем шире угол зрения, тем он тупее.
 
SAS888, Выдает ту же ошибку в той же строке.

Могу выслать вам пример на почту.
 
Ответил по e-mail.
Чем шире угол зрения, тем он тупее.
 
Ну вот... :(
Чем кончилась история???
Вы хоть в конце скажите как решилась проблема.
Буду следить за развитием событий)))

Бессмысленно осмысливать смысл неосмысленными мыслями.
 
ivan31888,
История пока продолжается, файл тяжелый, да и выгрузка неоднозначна очень. Поставщик пока молчит, но есть надежда довести макрос и с поставщиком договориться, чтобы разделители были везде одинаковые. Обещаю держать в курсе.
 
Manhill, спасибо! Жду развязки)

Бессмысленно осмысливать смысл неосмысленными мыслями.
 
Обработал все 119 тысяч строк, пришлось по 10 тысяч разбивать, иначе  переполнение памяти выдавало, склеил получилось 840 тысяч строк  примерно.
Таблица работает! Сейчас немного данные причесываю - много дубляжей.
В целом - огромное спасибо, пусть с небольшой погрешностью, но можно анализировать!
Вот окончательный макрос.
Страницы: Пред. 1 2
Наверх