Страницы: 1
RSS
Создание группировки строк с дополнительным условием
 
Доброго времени суток форуму!
Помогите, пожалуйста, ускорить и (или) упростить работу макроса группировки строк.
Имеется очень большой (20.000+) список, на самом деле - иерархический, но представленный в простом виде (в файле - пример на листе Данные).
Вид иерархии - "итоги сверху".
В самом низу - строка общих итогов. Её группировать не надо.
Уровень каждой строки задается числом в первом столбце.

Нужно создать на листе соответствующую структуру.
Важное дополнительное условие - группы (подгруппы), у которых имеется только один подчиненный уровень, нужно "свернуть".

Необходимый вид в файле - на листе Результат.
Мои попытки решить эту задачу (используя примеры с разных форумов) - тоже в файле.
Но работает этот макрос медленно.  :(  

Посоветуйте, как можно его ускорить или есть метод лучше (без лишнего цикла)?
Спасибо.
Изменено: ro.dimchik - 13.04.2013 10:37:54
Дмитрий Романенко
 
Пробуйте
 
Большое спасибо за попытку, Skif-F.
Для приложенного примера работает верно.
К сожалению -моя вина - предыдущий пример был составлен не совсем хорошо. Реальные данные более сложные. Для ряда случаев Ваш алгоритм "свёртки" работает неправильно.

Пример в файле.
Дмитрий Романенко
 
Цитата
ro.dimchik пишет:
моя вина - предыдущий пример был составлен не совсем хорошо. Реальные данные более сложные.
Получается, человек зря тратил на Вас своё время... КТО мешал показать РЕАЛЬНЫЕ данные?
 
Цитата
Юрий М пишет:
Получается, человек зря тратил на Вас своё время...
Почему?
В первом посте не было сказано, что решение требуется только для данного примера.
Были описаны структура данных и задача.
Был приведён пример. Абсолютно корректный. Для данного примера всё работает правильно. Для другого примера такой же структуры - нет.

Цитата
Юрий М пишет:
КТО мешал показать РЕАЛЬНЫЕ данные?
Все 20.000+ строк? По семь-десять файлов в день? Вы шутите?
Дмитрий Романенко
 
Цитата
ro.dimchik пишет:
Все 20.000+ строк? По семь-десять файлов в день? Вы шутите?
Я не говорил, что нужны все 20 000 строк. И не шучу. Вы же сами пишете:
Цитата
Реальные данные более сложные.
- вот и нужно было показать "более сложные".
 
Ну я же написал:
Цитата
ro.dimchik пишет:
К сожалению -моя вина - ...
Вы вообще смотрели оба примера?
Вы можете, навскидку, определить, что второй - действительно более сложный?
Да, на шесть строк длиннее. Но сложнее ли? Структура та же.

Давайте прибегнем к аналогии. Стоит задача - написать код сложения целых чисел. Точка.
Приведён пример: 6+4 должно получиться 10.
Если кто-нибудь сможет, реализуя алгоритм сложения целых чисел, написать правильный код для чётных чисел, некорректно работающий для нечётных - это тоже будет вина примера?

Извините, не могу принять Ваши претензии. Спор бессмысленный.
Дмитрий Романенко
 
Цитата
Вы можете, навскидку, определить, что второй - действительно более сложный?
Вы же как-то определили? В конце концов можно было показать два вида данных и предупредить об этом.
А со мной и не нужно спорить - нужно просто принять к сведению мои замечания.
 
Принято.
Дмитрий Романенко
 
Вариант:
 
С.М., спасбо, очень интересный вариант.
Вроде бы работает правильно, хотя в детали алгоритма ещё не вник.
На большом объеме потестирую в понедельник.
Дмитрий Романенко
 
Можно я тоже приму участие?
Для Юрий М: зря Вы так резко наехали на человека, он в самом деле не мог учесть, что кто-то настолько упростит его программу, которая нормально работала на любом файле, что будет зависимость в выходных данных от входных. При этом он наказал сам себя - тем, что ему пришлось дольше ждать решение этой задачи.
 
Skif-F, Вам тоже следует прочитать Правила. В частности, п. 3.10. Есть ведь личные сообщения и почта для этих целей.
Страницы: 1
Читают тему
Наверх