1

Есть ли способ установить шкалу на графике так, чтобы первичные максимальные и минимальные значения Y равнялись одинаковым значениям и на вторичной оси Y?

По сути, у меня есть несколько различных акций, которые я просматриваю (исторические значения журнала), у каждого из которых есть свой линейный график цен, а затем я добавил вторичный ряд, который показывает 3 горизонтальные линии - среднюю цену и одну стандартную. отклонение выше и ниже среднего, поэтому я могу видеть обычный ценовой диапазон, в котором колеблется акция (эта серия представлена в виде графика рассеяния). Моя проблема в том, что Excel, кажется, использует разные автоматические масштабы для каждой оси Y (я пытался включить те же самые минимальные и максимальные значения в мои вторичные ряды, но иногда масштаб все еще различен).

В идеале, поскольку я рассматриваю довольно много различных акций, я хотел бы автоматизировать это, добавив несколько столбцов, в которых я мог бы просто установить максимальное и минимальное значения Y, равные максимальной или минимальной цене каждой акции (для как первичная, так и вторичная оси). Я попытался заглянуть на следующий сайт, чтобы посмотреть, смогу ли я создать макрос (http://peltiertech.com/Excel/Charts/AxisScaleLinkToSheet.html), но мои навыки написания макросов довольно недостаточны и мне не повезло.

Я понимаю, что этот запрос может быть возможен только через VBA, хотя, если говорить коротко, кто-нибудь знает, как настроить макрос, который позволит моему выбранному графику автоматически изменять размеры, используя параметры, которые я ему задаю? (Скажем, столбец A показывает даты, B показывает цены, а в разделе справа (скажем, ячейки D1:F4) будут указаны минимальные и максимальные значения X и Y, а также, возможно, размер тика, из которого макрос мог бы прочитать? (Я знаю, как создать пустой макрос, а затем перейти к самому макросу, но здесь я начинаю немного заблудиться относительно того, куда на самом деле вставлять код).

2 ответа2

0

Вы можете сделать это автоматически и независимо от VBA, добавив некоторые данные на график.

В ячейку F2 (например) вставьте формулу, которая вычисляет минимум всех значений Y на обеих осях, а в ячейке F3 вставьте формулу, которая вычисляет соответствующий максимум. Как это:

Шкалы равных осей - пример данных

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

На третьем графике я добавил минимальные / максимальные данные из столбца F к основной оси, а на четвертом к второй оси.

Наконец, на пятом графике я отформатировал обе серии min/max без линий или маркеров, чтобы они были скрыты. При необходимости вы можете удалить их из легенды: один раз нажмите на легенду, затем один раз на запись легенды, чтобы удалить, затем нажмите Удалить.

Однако данные изменяются, обновляются минимальные / максимальные вычисления в столбце F, как и диаграмма.

Равные Весы Оси - Эволюция Диаграммы

0

Этот фрагмент кода должен предоставить вам основы для вашего запроса. В модуле для вашей рабочей книги он должен стоять отдельно, или отсюда вы можете расширить его на другие рабочие листы или изменить любую часть диаграммы. Первые две строки предназначены для отслеживания ошибок, если у вас не выбран график. Все остальное форматирует. Просто наведите контрольные диапазоны на ячейки, которые вы хотите использовать для своих весов.

Sub CustomAxis()

If ActiveChart Is Nothing Then ' Error trap to ensure a chart is selected
    MsgBox "Please: Select a chart and try again.", vbExclamation

    Else

        ActiveChart.Axes(xlValue).MinimumScale = Range("A2") 'Set min scale to cell A2
        ActiveChart.Axes(xlValue).MaximumScale = Range("A3") 'Set max scale to cell A3
        ActiveChart.Axes(xlValue).MajorUnit = Range("A4") 'Set major tick to cell A4
        ActiveChart.Axes(xlValue).MinorUnit = Range("A5") 'Set minor tick to cell A5

End If

End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .