Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Главное меню

Использование двух осей при построении графика прихода/расхода

Автор kim k., 22.04.2011, 13:26

« назад - далее »

kim k.

Добрый день!
у меня имеется вопрос по использованию двух осей для двух рядов данных Сводной Таблицы (приход денег и расход денег). Во вложении пример.
Представление данных, которого я добиваюсь, отображено на левом графике; масштабирование основной оси стоит в автомате, масштабирование вспомогательной выставляется вручную идентично основной. При привязке обоих рядов данных к основной оси, теряется часть представления (правый график).

Вопрос такой: можно ли сохранить две оси при том, что масштабирование вспомогательной было привязано к значениям основной?

Andrey Lenets

Цитата: kim k. от 22.04.2011, 13:26
Вопрос такой: можно ли сохранить две оси при том, что масштабирование вспомогательной было привязано к значениям основной?
с помощью VBA можно   :)
    ActiveSheet.ChartObjects(1).Activate
    With ActiveChart
        .Axes(xlValue, xlSecondary).MaximumScale = .Axes(xlValue).MaximumScale
        .Axes(xlValue, xlSecondary).MinimumScale = .Axes(xlValue).MinimumScale
    End With

основная ось - авто!

_Boroda_

Посмотрите такой вариант -
на первой диаграмме 2 оси, обе масштабируются автоматом

Я не совсем понял, зачем все это? Чем не нравится вторая диаграмма?
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

kim k.

Цитата: Andrey Lenets от 22.04.2011, 14:47
Цитата: kim k. от 22.04.2011, 13:26
Вопрос такой: можно ли сохранить две оси при том, что масштабирование вспомогательной было привязано к значениям основной?
с помощью VBA можно   :)
    ActiveSheet.ChartObjects(1).Activate
    With ActiveChart
        .Axes(xlValue, xlSecondary).MaximumScale = .Axes(xlValue).MaximumScale
        .Axes(xlValue, xlSecondary).MinimumScale = .Axes(xlValue).MinimumScale
    End With

основная ось - авто!
Спасибо, Андрей!
а можно ли привязать запуск макроса к вносу каких-либо изменений в СТ?

_Boroda_

Цитироватьа можно ли привязать запуск макроса к вносу каких-либо изменений в СТ
Конечно. Повесить его на Worksheet_PivotTableUpdate (в модуле листа)

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
   ActiveSheet.ChartObjects(1).Activate
    With ActiveChart
        .Axes(xlValue, xlSecondary).MaximumScale = .Axes(xlValue).MaximumScale
        .Axes(xlValue, xlSecondary).MinimumScale = .Axes(xlValue).MinimumScale
    End With
End Sub
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

kim k.

Спасибо, _Boroda_!
Пока писал ответ на ваш первый ответ, вы снова ответили! Теперь не знаю, выкладывать ли пояснения, в чем смысл именно моего представления или нет...

По вашему ответу, я так понял, это где-то в Project manager цепляется? Пока я имею весьма ограниченное представление о VBA, хотя буду действительно рад его расширить.
Спасибо!

_Boroda_

ЦитироватьТеперь не знаю, выкладывать ли пояснения, в чем смысл именно моего представления или нет...
Выкладывать
ЦитироватьПо вашему ответу, я так понял, это где-то в Project manager цепляется? Пока я имею весьма ограниченное представление о VBA, хотя буду действительно рад его расширить.
ПКМ на ярлычке листа - Исходный код. Туда и кладем.
А почему без макросов не хотите? Там ведь все просто. Я именно так много диаграмм у себя на работе выравниваю.
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

kim k.

Ок, тогда отвечу в порядке возникновения:
Цитата: _Boroda_ от 22.04.2011, 14:50
Посмотрите такой вариант -
на первой диаграмме 2 оси, обе масштабируются автоматом
при масштабировании осей автоматом теряется визуальная соотнсимость двух рядов данных. Т.к. на одной оси МАХ может быть 100 000 а на другой -- 300 000.
Цитата: _Boroda_ от 22.04.2011, 14:50
Я не совсем понял, зачем все это? Чем не нравится вторая диаграмма?
Ну, я писал в самом примере, который я выложил (.хлсх). Возможно я написал понятно именно для себя, попытаюсь тут пояснить более развернуто -- если мы используем для визуального анализа данных диаграму без СТ (т.е. не мечемся взглядом туда-сюда, туда-сюда), то в графике необходимо видеть достаточное представление в виде визуального отображения и контекстных пдсказок. Значения второго ряда данных вынесены в подписи, поэтому очевидны для человека. Значения первого в подписи не вынести -- остаются контекстные подсказки. Т.е. если навести мышку, подсказка всплывет. И тут в случае использования одной оси вознкает сложность -- столбики диаграммы имеют всегда одинаковую ширину. Т.е. в случае если отображение второго ряда перекрывает отображение первого, вызвать контекстную подсказку проблематично. Возможно, но проблематично -- надо навести мышку рядом со столбиком диаграмы и держать не двигая. Для меня нормально, начальство это снервирует.
Менять ряды местами тоже не выход, т.к. не всегда второй перекрывает первый
ЦитироватьПКМ на ярлычке листа - Исходный код. Туда и кладем.
Ага, теперь понятно. Положить в исходный код вот это:
ЦитироватьPrivate Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
   ActiveSheet.ChartObjects(1).Activate
    With ActiveChart
        .Axes(xlValue, xlSecondary).MaximumScale = .Axes(xlValue).MaximumScale
        .Axes(xlValue, xlSecondary).MinimumScale = .Axes(xlValue).MinimumScale
    End With
End Sub
Да, теперь работает изумительно!
Спасибо за помощь и понимание!

Ответ по моему позжевыложеному ответу буду очень рад прочесть

_Boroda_

Сдается мне, что Вы не совсем внимательно посмотрели мой файл из второго поста. Поиграйтесь там с цифрами и посмотрите, как первая диаграмма реагировать будет. Там фишка в том, что у обеих осей ВСЕГДА будет одинаковый максимум, какие цифры не ставь.

Кстати, а зачем вообще все это? переместите подписи, как на вложении - и счастливый начальник отпустит Вас в отпуск! Может быть.
ЦитироватьОтвет по моему позжевыложеному ответу буду очень рад прочесть
Это на какой?
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Andrey Lenets

Цитата: _Boroda_ от 26.04.2011, 12:57
Кстати, а зачем вообще все это? переместите подписи, как на вложении
решение интересное!  8)
покажи, как для Сводной Таблицы оно будет выглядеть?  ;)

_Boroda_

А какая разница?
Во вложении 3 варианта диаграммы.
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Andrey Lenets

Цитата: _Boroda_ от 26.04.2011, 13:37
А какая разница?
Во вложении 3 варианта диаграммы.
...в отпуск тебя не отпустят!  :P

если обратить внимание на эти 3 диаграммы, то мы получаем проблему, описанную автором первого поста в  Варианте 2!!!
исчезло элегантное решение с дополнительной осью, при использовании Сводной Таблицы!!

Я к тому, "для чего вообще всё это") VBA всё же позволяет с минимум изврата получить решение!  8) Которое, кстати, не будет зависеть ни от типа диаграммы, ни от типа источника данных...

Всем удачи!

_Boroda_

Цитироватьисчезло элегантное решение с дополнительной осью, при использовании Сводной Таблицы!!
Конечно исчезло. Потому, что оно там и не нужно. Вторая ось рисовалась, насколько я понял, исключительно для того, чтобы при наведении мыши увидеть циферки. А сейчас мы и так их видим в подписях для обеих рядов.
ЦитироватьVBA всё же позволяет с минимум изврата получить решение!
Вот как раз с этим утверждением я не согласен. Если таблица делается для себя - тогда да. И мои таблицы (которые только мои, и никуда больше не идут) практически все с макросами. А вот если для кого-то еще делаю, и, уж тем более, если для начальника, то, по возможности, макросы я предпочитаю не использовать. Просто хотя бы потому, что их нужно разрешать, а люди есть всякие - некоторые слова такого не знают. Например, моя начальница их просто боится. Любимая фраза ее, когда что-то не так - "Это Ваши макросы там что-то наделали!".

Прошу заметить, что это только мое мнение и я его никому не навязываю.
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Andrey Lenets

kim k., теперь у тебя есть примеры на все случаи жизни!  :D

Boroda, здОрово - всё очень подробно! интересные примеры!  :)


kim k.

Цитата: _Boroda_ от 26.04.2011, 12:57
Сдается мне, что Вы не совсем внимательно посмотрели мой файл из второго поста. Поиграйтесь там с цифрами и посмотрите, как первая диаграмма реагировать будет. Там фишка в том, что у обеих осей ВСЕГДА будет одинаковый максимум, какие цифры не ставь.
Вообще, да. И заметил это только сейчас)
Я так понял, для "Точки 5" Ряда Приход Денег вы устанавливаете наибольшее значение из двух рядов. Да, так действительно моя проблема решается. Однако как вы это делаете? вы объясните?