Страницы: 1
RSS
Просчет долей групп товаров от общего показателя по цветам (VBA/макрос), сложно
 
не знаю можно ли такое вообще физически реализовать в VBA

нужна цветовая считалка - есть список товаров и 5 базовых цветов excel; красным пользователь выделяет общее количество, над красным всегда будет строчка с годами. Оранжевым, желтым салатовым и зеленым выделяются группы значений которые за определенный год должны быть просуммированы между собой и посчитаться долей к общему. после нажатия на макрос должны вылезти доп. строчки с просчитаными значениями в самом начале. Дополнительная сложность: если к примеру есть желтый и оранжевый а зеленых нет. ну и естественно красным всегда выделена 1 строчка, а цветами может быть выделена как одна строчка, так и несколько, совместных или нет
Изменено: Kosme - 22.05.2017 10:29:36
 
http://www.planetaexcel.ru/techniques/9/162/
 
Посмотрите пример во вложении.
Откройте файл и выполните макрос "Main".
Чем шире угол зрения, тем он тупее.
 
Офф: как уже этих "маляров" убедить, что работать надо с данными, а не с раскрасками :(
Я сам - дурнее всякого примера! ...
 
SAS888, спасибо! а почему эта штука ошибку в строке  ReDim a(1 To 4, 1 To c): ReDim tmp(1 To c) выдает когда я другие таблицы использую более масштабные или более мелкие. Я вроде понимаю, что тут что-то связано с выбором массива, но немного не вьезжаю, что подправить чтобы универсально стало
Изменено: Kosme - 22.05.2017 12:19:52
 
Цитата
kuklp написал:
как уже этих "маляров" убедить, что работать надо с данными
АБСОЛЮТНО согласна!
Жаль пользователей: им "внедряют" свое "цветное" видение результатов обработки информации ретивые разработчики алгоритма!
Пользователю-экономисту нужен элементарный "протокол" обработки текущей информации без цветных затей!  :D  
 
Цитата
Kosme написал:
...а почему эта штука ошибку в строке  ReDim a(1 To 4, 1 To c): ReDim tmp(1 To c) выдает...
В этой строке ошибка возможна только в одном случае, когда переменная "c", объявленная, как Long, меньше единицы.
В примере, по которому я делал код, переменная "c" определялась как номер последнего заполненного столбца в 9-ой строке (строке с заголовками) минус 2.  А обработка таблицы начиналась с 10-го столбца (см. Ваш файл из #1). Подозреваю, что Вы применяете макрос для данных, которые на листе расположены иначе (например, 9-я строка пустая). Проверьте.
P.S. Т. к. макрос использует метод SpecialCells, то, для предотвращения ошибок (если нет ячеек какого-либо цвета),часть кода выполняется при отключенном обработчике ошибок. Поэтому, в случае возникновении проблем, прикрепите этот "проблемный" файл с "разукрашенными" строками и макросом.
P.P.S. Абсолютно согласен с тем, что такой (цветной) подход к реализации задачи не есть правильный. Подумайте. Может стоит использовать другой способ пометки строк?
Изменено: SAS888 - 23.05.2017 05:15:26
Чем шире угол зрения, тем он тупее.
 
Тут кстати в строке total итоговые суммы по столбцам больше чем надо. Или так и должно быть ?
Изменено: Yum - 23.05.2017 04:11:13
 
Цитата
SAS888 написал:
P.P.S. Абсолютно согласен с тем, что такой (цветной) подход к реализации задачи не есть правильный. Подумайте. Может стоит использовать другой способ пометки строк?

спасибо за пояснение, частично разобрался и подправил код, не понял единственное как сделать чтобы копировалась шапка при данной таблице и просчет начинался со столбца B, в остальном всё заработало
 
1. Ну, если строка с заголовками (начало таблицы с данными) не постоянна, то ее можно определить.
2. Начинать со столбца "B" - это тоже понятно.
3. А что значит
Цитата
чтобы копировалась шапка при данной таблице
не понятно. Что такое "шапка"? Это с какой по какую строку? К тому же, макрос ничего никуда не копирует. Он добавляет в начало листа 5 строк, раскрашивает их и помещает туда все вычисленные значения.
Если Вы запускаете макрос при уже существующих результатах, то эти строки нужно удалять в самом начале кода.
Поясните "на пальцах" какие строки есть "шапка" и что куда нужно копировать? Как определить первую строку таблицы с данными (может по значению заголовка в 1-ом столбце)?
Чем шире угол зрения, тем он тупее.
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Под шапкой я имел ввиду - строчку с годами, она вверх не перескакивает единственное что в ней постоянно это упоминание в каком то виде годов, а ячейка из первого столбца принимает разные значения типо Importers, Exporters, Product Codes и несколько других, в приложении разные виды табличек  
 
Kosme, Зачем все сообщение цитировать?
Чем не подходит функция из приемов?
 
Тем, что задача совершенно другая стоит, сделать быстрый и удобный цветовой калькулятор, который позволит за 4-5 сек накидать нужные комбинации и быстро просчитать не сумму а отношение долей к общему и вывести в отдельный диапазон который уйдет в дальнейшую работу
 
Посмотрите пример во вложении (строки окрашены в случайном порядке).
1. Определение начала таблицы осуществляется поиском строки, которая окрашена соответствующим (как у Вас во всех таблицах) цветом.
2. Таблица может содержать любое количество строк и столбцов, располагаться, начиная с любой строки и в заголовках иметь объединенные ячейки.
3. Выполнять макрос можно несколько раз. Если предыдущие результаты расчетов уже существуют, то они будут обновлены. Если их нет - сформированы.
Проверяйте.

P.S. Выполняйте требования модераторов! Иначе, Вы можете не дождаться ответов.
Изменено: SAS888 - 24.05.2017 10:54:06
Чем шире угол зрения, тем он тупее.
Страницы: 1
Наверх