Страницы: 1
RSS
Аналог сводной таблицы средствами VBA
 
Здравствуйте.  
Помогите пожалуйста, как создать подобие сводной таблицы.  
Я пробовал сам написать макрос (он присутствует в модуле). но писатель из меня не важный.  
Смысл сводной таблицы в чем:  
Во вложении пример исходных данных. Данные на листе "1".  
Это Центр затрат, Статьи и Сумма.    
сРАЗУ ГОВОРЮ-СТАНДАРТНАЯ СВОДНАЯ ТАБЛИЦА НЕ ПОДХОДИТ ИЗ ЗА ПРИСУТСТВИЯ В ТАБЛИЦЕ "ПРИМЕСЕЙ" (ДРУГИХ ТИПОВ ДАННЫХ).  
Таких таблиц как в примере может быть на одном листе много, с разными данными.  
Необходимо, чтобы макрос суммировал для каждого центра затрат суммы по статьям и записывал их в таблицу. (в книге есть пример того, как она должна выглядеть)  
Для каждого центра затра может быть несколько статей.    
В книге есть также справочник с центрами затрат и статьями.
 
Попробуйте макрос из http://www.planetaexcel.ru/forum.php?thread_id=26105  
 
Сперва поставьте/протяните ПРАВЕЕ (в А) формулу типа =C8 &"|" & E8  
Зтем по этим двум столбцам (A и D) отработает макрос, получите результаты вида  
 
Котельная|206 3238.833344  
Отдел оформления заказов|702 2809  
 
Добавляете один столбец, куда можно первый разделить назад на исходные данные (вручную).  
Ну а если тот код изменить под задачу - всё будет делаться автоматически.  
Я думаю, чуть поработать руками напрягёт меньше, чем переделывать код :)  
 
 
P.S. А макросы Вы и впрямь писать ещё не умеете... Где начало, где конец? :)
 
Начало и конец    
Sub...  
End Sub  
Дело до этого просто не дошло. мозг встал в ступор на алгоритме.  
В вашем примере к сожалению не знаю большинства операторов (((  
Например, какая строка выбирает соответствующую центру затрат статью?  
Какая строка суммирует, при совпадении у одного центра затра статей. например если у котельной два раза будет указана статья 206. как это просуммировать?  
А если у котельной один раз встречается статья 206 а далее встречается статья 100. как сделать чтобы эти данные шли последовательно, сначала статья 206 и ее сумма, потом 100 и ее сумма?
 
Там в теме в конце универсальный макрос в файле.  
Вы в своём файле выделяете диапазон, где СЛЕВА (перепутал выше лево/право... ПРАВЕЕ читать ка ЛЕВЕЕ :) ) столбец с уникальными, правее столбец с суммами, запускаете код, получаете результат.  
Т.к. у Вас столбца с уникальными сочетаниями котельная-статья нет, то его нужно создать.  
Ну а насчёт порядка - отсортируйте в удобный момент. Или исходные данные, или промежуточные, или результат.  
Или в коде массив данных - если будете код править.  
А код работает так - собирает в словаре уникальные и суммы к ним, затем выгружает в новую книгу. Оттуда берите данные вручную и делайте с ними что угодно.
 
суммы всегда разные.Это стоимость за услуги по доставке. зависит от ряда параметров.  
А вот статьи и центры затрат всегда одни и теже. они в справочнике.  
Смысл таблицы и есть в том чтобы просуммировать стоимость доставки по одинаковым статьям для одного центра затрат.  
 
Исходные таблицы у меня формируются макросом и должны быть именно в том виде в котором они в примере.  
 
Попробую разобраться с вашим примером завтра.
 
Так если исходные формируются макросом - вот в том макросе из "сырых" данных сразу и делайте "сводную".  
Ну а мой код то что нужно и делает - там только ещё сумма по "ИТОГО" тянется, её нужно потом удалить из результатов.  
Код использовать в том файле, который на форуме - там в файле всё написано, настройки код берёт с листа того файла.
 
Ок. спасибо. попробую разобраться
 
Т.е. вернее код использовать ИЗ ТОГО файла НА АКТИВНОМ файле - файл с кодом открыт в фоне, по ALT+F8 выбираем из него код и выполняем (сперва в активном файле выделяем обрабатываемую область).
Страницы: 1
Читают тему
Наверх