excel的双轴曲线图,都有正负数,如何调整两纵轴的零点相对?
通常,我通过调整两图的最大最小值来使两轴零点相对,但什么最值是合理的,没有标准,当我每月要调整100张这样的图时,就很浪费时间了。
后来,如附图,我通过新设两个虚拟曲线调整两边的图形,其实是调整两边的最值,但如何设合理的公式计算最值,使0点刚好相对呢?
用编程系统地调整曲线的最大最小值,或者编写一条到两条虚拟曲线来调整两轴的最值,不管什么方法,只要能零点对齐就好。(注意:是100张双轴图,不要就这个例子简单回答我两边手动设多少的最大值最小值,路过勿留言,谢谢!)
举例双轴曲线的数据如下:
横轴:
1
2
3
曲线1:158 125 -58
曲线2:50 25 35
200分求解高难题,高手进。excel的双轴曲线图,如何编程调整两纵轴的零点相对
答案:2 悬赏:60 手机版
解决时间 2021-01-29 22:57
- 提问者网友:斑駁影
- 2021-01-29 07:50
最佳答案
- 五星知识达人网友:春色三分
- 2021-01-29 08:24
根据你的例子,思路是把坐标设定相同,不过,要适合两条线,所以,最大最小值要选择最大,或则最小的值对应于最大最小值。
下面的宏可以在界面上画个按钮,连接到这个宏就可以了。
代码如下:
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 Sub
下面的宏可以在界面上画个按钮,连接到这个宏就可以了。
代码如下:
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 Sub
全部回答
- 1楼网友:十鸦
- 2021-01-29 09:48
同问。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯