辅助轴与主轴的步数相同?

时间:2016-05-10 11:56:41

标签: vba excel-vba excel-2010 axis excel

我正在寻找一种让主轴和副轴使用相同步数的方法(以便轴线始终在两个轴上对齐)。

目前,我的主轴有5个步骤,而我的主轴有6个步骤。我希望两个轴的步数相同。

这可能吗?

图表数据因验证列表中的选择而异。 这个过程:

在仪表板上,用户选择5个选项:

  1. 零售商
  2. 产品
  3. 事实1
  4. 事实2
  5. fact 3
  6. 事实1和事实2在主轴上;事实3在次要轴上。

    与1 - 5下的选择相对应的值变化很大。 因此,主轴和副轴的值会发生很大变化(在每次新选择时)。

    对于每个新选择,代码应计算新的最小值和最大值以及两个轴的主要单位,使得两个轴的主要网格线数相同。

    我想上面的内容应该由worksheet_change事件触发。但后来我想知道如何设置主轴和副轴的主要单位。

    修改

    我刚刚发现这个网站有vba代码,应该做我想做的事情。我还没有尝试过,但我会的。

    http://www.myengineeringworld.net/2015/04/adjust-secondary-y-axis-scale-chart-vba.html

1 个答案:

答案 0 :(得分:1)

是的,只需为主轴和辅助轴分配相同的值

编辑:所以你只想让别人为你编写代码?我的答案正是你的问题:它是否可能......下面的代码会将辅助轴和主轴的最小和最大对齐,所以majorUnit可能是相同的。如果没有,更新宏不是很难做到这一点。如果不可能,请告诉我

Sub alignAxis()

    Dim mySheet As Worksheet
    Set mySheet = Sheets("Sheet3")

    Dim primaryMax As Integer
    Dim primaryMin As Integer
    Dim secondaryMax As Integer
    Dim secondaryMin As Integer
    Dim max As Integer
    Dim min As Integer

    With mySheet
        With .ChartObjects("myChart").Chart.Axes(xlValue)
            primaryMin = .MinimumScale
            primaryMax = .MaximumScale
        End With
        With .ChartObjects("myChart").Chart.Axes(xlValue, xlSecondary)
            secondaryMin = .MinimumScale
            secondaryMax = .MaximumScale
        End With

        If primaryMax > secondaryMax Then
            max = primaryMax
        Else
            max = secondaryMax
        End If

        If primaryMin < secondaryMin Then
            min = primaryMin
        Else
            min = secondaryMin
        End If
        With .ChartObjects("myChart").Chart.Axes(xlValue)
            primaryMin = min
            primaryMax = max
        End With
        With .ChartObjects("myChart").Chart.Axes(xlValue, xlSecondary)
            secondaryMin = min
            secondaryMax = max
        End With

    End With

End Sub