2013-04-02 27 views
1

使用下面的代码我得到的图形完全按照我的需要,只是它以错误的方式绘制坐标轴。我如何获得它将X数据更改为Y数据,反之亦然?交换轴绘制VBA中的散点图

Sub AddChartObject() 


    Set cht = ActiveChart 
    Set rng = ActiveSheet.Range("AB30:AD40") 



    With ActiveSheet.ChartObjects.Add(Left:=rng.Left, Width:=rng.Width, Top:=rng.Top, Height:=rng.Height) 
    '(Left:=100, Width:=375, Top:=75, Height:=225) 
     .Chart.ChartType = xlXYScatterLines 

     .Chart.SetSourceData Source:=Range("O30:O40,N30:N40") 


    End With 


End Sub 

回答

3

您需要设置XValuesValues独立,将数据添加到图表后。

Dim srs as Series 

With ActiveSheet.ChartObjects.Add(Left:=rng.Left, Width:=rng.Width, Top:=rng.Top, Height:=rng.Height) 
'(Left:=100, Width:=375, Top:=75, Height:=225) 
    .Chart.ChartType = xlXYScatterLines 

    '.Chart.SetSourceData Source:=Range("O30:O40,N30:N40") 
    Set srs = .Chart.SeriesCollection.NewSeries 
    srs.Name = "The series name" '<-- edit as needed 
    srs.XValues = Range("O30:O40") 
    srs.Values = Range("N30:N40") 

End With 

如果不这样做,那么就翻转值/ xValues像:

srs.XValues = Range("N30:N40") 
    srs.Values = Range("O30:O40") 

其中一个方法会为你做它。

+0

完美!按照需要正常工作。谢谢。 – Mary

+0

优秀。是的,只需要覆盖Excel在功能区/菜单中的“插入图表”时使用的默认假设。 –