У меня другая задача- надо вытащить последнее значение, с помощью ВПР не получается, сортировать нельзя. Может кто посмотрит плиз? не могу допендрить пока
SAS888 М.б. ошибка из-за того что в первых 7 строках только по 1 позиции внесено, а в последних 2-х (9-й и 10-й) их значительно больше (33 и 44), м.б. тут причина... Вопрос -писать на почту или здесь продолжать - вроде интерес есть к теме?
В начале Вы говорили что позиций до 10 штук, а сейчас 33 и 44, получается что SAS888 каждый раз переписывает макрос под изменяющиеся условия.... Для SAS888: может вариант сначала разбить текст по столбцам, а потом определить размер массива по самой большой колонке? и дальше уже по Вашему методу?
Manhill Теперь ясно. Ошибка возникает в версиях Excel, которые ниже, чем 2010. Проверил на Excel 2007 - получил ошибку. Это связано с тем, что выгрузить на лист массив, элемент(ы) которого содержат более 911 символов невозможно. Можно забрать в массив, обработать, а выгружать на лист только поэлементно. В прикрепленном файле это реализовано.
Цитата
Дмитрий Тарковский написал: может вариант сначала разбить текст по столбцам, а потом определить размер массива по самой большой колонке? и дальше уже по Вашему методу?
Макрос так и делает. От количества строк (столбцов) код макроса изменять не нужно. Но, теперь, для того, чтобы правильно разбить по столбцам исходный текст (поставить на место "_1.0_"), перед тем, как разбивать по столбцам, макрос забирает в массив "длинные" элементы, обрабатывает и выгружает на лист, что и вызывает ошибку в ранних (до 2010) версиях Excel.
Только сегодня смог потестить - описание прилагаю. Склоняюсь к необходимости переустановки Экселя на рабочем компе, дома все работало. Попробовал 5 тысяч строк обработать - пишет ошибку 7 'Out of memory' в строке - Set x = Range(Cells(2, j + 1), Cells(i, k)):a = x.Value: k = 0 Образец большой - пошлю на почту.
Посмотрите пример во вложении. 1. Теперь большие файлы будут обрабатываться. Предварительная "чистка" происходит в ячейках столбца без использования массива. 2. Извлечение количества и ед. изм. сделал через регулярные выражения с гибким поиском количества. Должно помочь. 3. Обратите внимание на выделенную желтым цветом ячейку. В ней сначала прописано общее количество наименований, затем они расписываются по сериям. Макрос все суммирует и, естественно, получает вдвое больший результат. Как это различать?
ivan31888, История пока продолжается, файл тяжелый, да и выгрузка неоднозначна очень. Поставщик пока молчит, но есть надежда довести макрос и с поставщиком договориться, чтобы разделители были везде одинаковые. Обещаю держать в курсе.
Обработал все 119 тысяч строк, пришлось по 10 тысяч разбивать, иначе переполнение памяти выдавало, склеил получилось 840 тысяч строк примерно. Таблица работает! Сейчас немного данные причесываю - много дубляжей. В целом - огромное спасибо, пусть с небольшой погрешностью, но можно анализировать! Вот окончательный макрос.