2016-10-31 33 views
0

次のコードは、動的に変化する範囲でXY散布図を生成します。しかし、バブルチャートを生成するために散布図のx、y、zの値をプログラムで設定する方法は難題です。私はそうすることを試みました(あなたがコードで見ることができるように)が動作しません。Excel VBA:グラフ生成用にX、Y、Z値をプログラムで設定する

どれでも私はデータのただ1行(1のx、1つのY、1 z)を持っている場合、例えば

dim a as long 
dim b as long 
dim i as long 
dim m as long 
dim j as long 

For i = 2 To lastrow 
If Cells(i, "A") = "Regression #" & m & " Output" Then 
a = i 'save regression #1 row number, where it begins 


For j = 2 To a 
If Cells(j, "A") = "Regression #" & m + 1 & " Output" Then 
b = j 
End If 
Next j 

    Set rngx = Range(Cells(b + 1, 2), Cells(a - 1, 2)) 
    Set rngy = Range(Cells(b + 1, 7), Cells(a - 1, 7)) 
    Set rngz = Range(Cells(b + 1, 8), Cells(a - 1, 8)) 
     Sheets("Chart Table").Shapes.AddChart.Select 
     ActiveChart.ChartType = xlBubble 
     ActiveChart.SetSourceData Source:=Union(rngx, rngy, rngz) 

     With ActiveChart.SeriesCollection.NewSeries 
     '.Name = ActiveSheet.Range("B2:B13") 
     .value = rngy 
     .xvalues = rngx 
     .BubbleSizes = rngz 
    End With 

     With ActiveChart 
     .SetElement (msoElementChartTitleAboveChart) 
     .Legend.Delete 
     .ChartTitle.Select 
     .ChartTitle.Text = Cells(a, 1).Value 
     End With 
Else 
End If 
Next i 

を高く評価しているのに役立ちます - そして、私はExcelが、それが唯一のバブルがありますを意味していることを知ってほしいです。今は3つの別々の泡としてそれを読んで、バブルサイジング要素があるという事実を無視してください。

答えて

1

rngx、rngy、rngzの和集合が連続した範囲であれば問題ありません。これらの範囲は複数の列で区切られているため、SetSourceDataコマンドは不完全であり、その結合をY値のセットとして扱い、デフォルト値(1,2,3)をX値、(1,1,1)をバブルとして使用しますサイズ。美しい

ActiveChart.SetSourceData Source:=Union(rngx, rngy, rngz), PlotBy:=xlColumns 
+0

しかし、この小さな変化があなたのコードを修正します! Jonありがとう! – Daruki

関連する問題