我正在寻找一种让主轴和副轴使用相同步数的方法(以便轴线始终在两个轴上对齐)。
目前,我的主轴有5个步骤,而我的主轴有6个步骤。我希望两个轴的步数相同。
这可能吗?
图表数据因验证列表中的选择而异。 这个过程:
在仪表板上,用户选择5个选项:
事实1和事实2在主轴上;事实3在次要轴上。
与1 - 5下的选择相对应的值变化很大。 因此,主轴和副轴的值会发生很大变化(在每次新选择时)。
对于每个新选择,代码应计算新的最小值和最大值以及两个轴的主要单位,使得两个轴的主要网格线数相同。
我想上面的内容应该由worksheet_change事件触发。但后来我想知道如何设置主轴和副轴的主要单位。
修改
我刚刚发现这个网站有vba代码,应该做我想做的事情。我还没有尝试过,但我会的。
http://www.myengineeringworld.net/2015/04/adjust-secondary-y-axis-scale-chart-vba.html
答案 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