|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
Дано: несколько листов, называющихся месяцами, и еще несколько листов, называющихся как-то по-другому и находящихся в книге постоянно. По мере наступления нового месяца, добавляется новый лист с его названием. На всех листах-месяцах информация представлена в однородном виде, но с разным количеством столбцов - сколько дней в месяце + столбец-среднее (в самом конце) + столбец с наименованием параметров (в самом начале). Столбец-среднее подводится только по части параметров, а для остальных пуст, и поэтому значительно короче столбца с наименованием параметров. Найти: построить гистограмму, на которой по месяцам будут выводиться средние значения параметров. Соответственно, на каждом листе-месяце надо выдернуть столбец-среднее, кусок столбца с наименованием параметров (ну, его можно один раз выдернуть, получается), сунуть в сводную на новом листе, добавить строку с наименованиями листов-месяцев, откуда сдернуто, и по этой табличке построить гистограмму. Очень прошу помощи в реализации. На vba, естественно. В идеале, чтобы оно само туда подтягивалось по мере обновления данных, а не генерилось каждый раз по кнопке, хотя такой вариант тоже приемлем. Идей, как реализовать это при динамическом количестве листов, особо не имею. Только если записывать куда-то в левое место названия новых листов и вытягивать их потом оттуда. Готовые коды, которые попадались мне в интернетах, используют ADODB или ODBC, вследствие чего малопонятны и вызывают опасения при перетаскивании файла с одной версии Excel на другую, например. как выдергивать только кусок столбца - тоже затрудняюсь, поскольку лобовое задание диапазона не знаю, куда прицепить, при условии, что при формировании сводной нужно указывать названия столбцов. При необходимости приложу файлик с примером листа-месяца. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 12:42 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
YoHnA, VBA не нужен. Вашу задачу можно решить функциями листа. Есть такая функция "ДВССЫЛ". Она преобразует текст в ссылку на ячейку. Например, =ДВССЫЛ("Лист1!A1") ссылается на ячейку Лист1!A1. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 12:54 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
Egoр, И чего с этим знанием делать, когда количество листов для обработки изменяется? Как мне каждый раз добавлять туда новые? Беглый гугл пояснил, что ДВССЫЛ используется для изменения адреса ячейки в формуле, но если мне надо добавить новые элементы в нее? Простите, пожалуйста, я немного чайник. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 13:01 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
YoHnA, Есть ли у вас алгоритм по которому формируются имена листов с данными? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 14:36 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
YoHnA, написано левой ногой. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Каждый столбец значений (по которому будет вычисляться среднее значение) должен быть озаглавлен соответственно (в примере "Значение") При переборе листов, если идентификатор столбца с требуемым заголовком не обнаружен - лист будет пропущен При обнаружении такого столбца - вычисляем его среднее значение. По окончании перебора строим гистограмму вычисленных средних значений по именам листов (в твоем случае - будут наименования месяцев). По надобности - причешешь сам - думаю труда не составит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 14:44 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
hclubmk, Спасибо огромное! Пара уточняющих вопросов: мне нужно среднее по строке, а не по столбцу, соответственно строка Код: vbnet 1.
Поменяется на Код: vbnet 1.
Правильно? И единственное, мне нужно не до конца строки, а до определенного столбца, вместо End(xlDown) можно подставить тот же target.Column(111)? И гистограмма из вашего кода строит получается по какому-то одному параметру гистограмму средних его значений по месяцам, правильно понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 15:09 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
Тьфу, прошу прощения, вместо End(xlDown) будет WS.Range(Cells(target.Row, target.Column(111)) же, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 15:13 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 15:16 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
авторИ гистограмма из вашего кода строит получается по какому-то одному параметру гистограмму средних его значений по месяцам, правильно понимаю? правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 15:18 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
hclubmk, для теста программка требует пары доработок, так что по итогу отпишусь позже :) И еще раз большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.05.2016, 15:29 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
Не получается, не то. Этот синтаксис пробегает строку до последнего заполненного столбца, а мне надо не до последнего, до определенного. Пробовала заменить на указание конкретной ячейки через Ws.Range.Cells, пробовала тупо указать столбец, не получается. Стильно туплю. И еще, подскажите, пожалуйста, как результирующую гистограмму вставить на лист? Нужен ли для этого синтаксис .charts, или можно просто засунуть результат функции в переменную и вставить в какую-то ячейку на листе? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2016, 12:18 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
YoHnA, 1. Код: vbnet 1.
2. "Засунув" результат функции в переменную, на листе можно лишь получить значение, вычисленное этой функцией. Здесь вариантов может быть несколько: либо вставлять график, либо обновлять график (если существует), либо заполнять результирующую таблицу, к которой будет привязан" график, ну или ещё какие либо варианты... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2016, 14:22 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
hclubmk, 1. И еще раз спасибо! 2. Интересует вариант обновления графика, построенного на таблице, наверное. Чтобы добавил новую сточку месяца, добавился новый столбик в гистограмму. Если пересоздавать таблицу, график будет же обновляться? Или упадет? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2016, 14:38 |
|
Диаграмма в Excel на основе изменяющегося количества листов
|
|||
---|---|---|---|
#18+
нет, если обновить значения - график обновится автоматически, но если добавить значения в таблицу - нужно будеит указать область данных (изменившуюся/увеличившуюся) посредством Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2016, 14:56 |
|
|
start [/forum/topic.php?fid=61&fpage=35&tid=2173066]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 142ms |
0 / 0 |