作业帮 > 综合 > 作业

200分求解高难题,excel的双轴曲线图,如何编程调整两纵轴的零点相对

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/18 10:03:51
200分求解高难题,excel的双轴曲线图,如何编程调整两纵轴的零点相对
excel的双轴曲线图,都有正负数,如何调整两纵轴的零点相对?
通常,我通过调整两图的最大最小值来使两轴零点相对,但什么最值是合理的,没有标准,当我每月要调整100张这样的图时,就很浪费时间了.
后来,如附图,我通过新设两个虚拟曲线调整两边的图形,其实是调整两边的最值,但如何设合理的公式计算最值,使0点刚好相对呢?
用编程系统地调整曲线的最大最小值,或者编写一条到两条虚拟曲线来调整两轴的最值,不管什么方法,只要能零点对齐就好.(注意:是100张双轴图,不要就这个例子简单回答我两边手动设多少的最大值最小值,路过勿留言,)
举例双轴曲线的数据如下:
横轴:1 2 3
曲线1:158 125 -58
曲线2:50 25 35
2楼的做法给我较大的启迪,可惜我图左轴是销售利润,右轴是毛利率(范围在0-100),如果右轴的最大值与左轴相同,就体现不到毛利率的变化了.也失去了双轴图的意义.
3楼的做法正是我目前的做法.不过即使这样设,最后的结果还是要自己微调,例如我贴出来的图,计算结果是-6.7,我还要微调到-30.有没有更好的算法呢?
200分求解高难题,excel的双轴曲线图,如何编程调整两纵轴的零点相对
根据你的例子,思路是把坐标设定相同,不过,要适合两条线,所以,最大最小值要选择最大,或则最小的值对应于最大最小值.
下面的宏可以在界面上画个按钮,连接到这个宏就可以了.
代码如下:
Sub TongyiZuobiao1()
'
'
'
Dim ma As Integer
Dim mi As Integer
Range("C7").Select
ActiveCell.FormulaR1C1 = "=MAX(R[-3]C[-1]:R[-2]C[1])"
Range("D7").Select
ActiveCell.FormulaR1C1 = "=MIN(R[-3]C[-2]:R[-2]C)"
ma = Int(Range("C7").Value)
ma = Math.Round(ma / 10, 0) * 10 + 10
mi = Int(Range("D7").Value)
mi = Math.Round(mi / 10, 0) * 10 - 10
ActiveSheet.ChartObjects("图表 2").Activate
ActiveChart.Axes(xlValue, xlSecondary).Select
ActiveChart.Axes(xlValue, xlSecondary).MinimumScale = mi
ActiveChart.Axes(xlValue, xlPrimary).MinimumScale = mi
ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = ma
ActiveChart.Axes(xlValue, xlPrimary).MaximumScale = ma
ActiveChart.Axes(xlValue, xlSecondary).MinorUnit = (ma - mi) / 5
ActiveChart.Axes(xlValue, xlPrimary).MinorUnit = (ma - mi) / 5
ActiveChart.Axes(xlValue, xlSecondary).MajorUnit = (ma - mi) / 10
ActiveChart.Axes(xlValue, xlPrimary).MajorUnit = (ma - mi) / 10
End Su