永发信息网

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

答案:2  悬赏:60  手机版
解决时间 2021-01-29 22:57
  • 提问者网友:斑駁影
  • 2021-01-29 07:50
excel的双轴曲线图,都有正负数,如何调整两纵轴的零点相对?
通常,我通过调整两图的最大最小值来使两轴零点相对,但什么最值是合理的,没有标准,当我每月要调整100张这样的图时,就很浪费时间了。
后来,如附图,我通过新设两个虚拟曲线调整两边的图形,其实是调整两边的最值,但如何设合理的公式计算最值,使0点刚好相对呢?
用编程系统地调整曲线的最大最小值,或者编写一条到两条虚拟曲线来调整两轴的最值,不管什么方法,只要能零点对齐就好。(注意:是100张双轴图,不要就这个例子简单回答我两边手动设多少的最大值最小值,路过勿留言,谢谢!)
举例双轴曲线的数据如下:
横轴:
1

2

3
曲线1:158 125 -58
曲线2:50 25 35
最佳答案
  • 五星知识达人网友:春色三分
  • 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
全部回答
  • 1楼网友:十鸦
  • 2021-01-29 09:48
同问。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯