如何使用R for循环来定义一个范围来创buildgraphics

我在Excel中有一个数据集,看起来像这样:

MA M1 M2 T1 T2 W1 W2 Th1 Th2 F1 F2 100 1 2 2 1 2 0 0 2 2 1 100 2 0 2 1 2 2 1 2 2 0 101 1 3 0 1 1 0 1 0 1 1 101 0 2 1 1 0 1 1 1 1 1 102 1 1 1 2 0 1 0 0 2 2 102 1 2 0 1 1 0 1 1 0 3 

我试图为每个代码(100,101,102)创build一个柱形图,其中每个代码将有2个数据集,水平值将是m1,m2,t1等。最后,我需要3个柱形图。 我正在尝试使用for循环在VBA中创build这些图表,下面是我一直在尝试的:

 Sub MA() Dim i As Integer Dim row1 As Integer, row2 As Integer For i = 1 To 6 Step 2 Dim MAChart As Chart Set MAChart = ActiveSheet.Shapes.AddChart.Chart With MAChart row1 = i + 1 row2 = i + 2 .ChartType = xlColumnClustered .SetSourceData Source:=ActiveSheet.Range("Q& row1 & : & Z & row2") End With Next i End Sub 

我不断收到“应用程序定义或对象定义”错误。 我无法定义每个图表的范围,因为它基于i而改变。 我很想find一个干净的方法,使用for循环创build一系列图表,而不必为每个不同的图表重新定义范围/数据集。 有谁知道一个好办法做到这一点?

下面是整个“范围”作为一个string,不等于一个范围

 Range("Q& row1 & : & Z & row2") 

尝试使用下面,你不需要row1和row2。 记下我如何build立一个有效范围的string

 Range("Q" & 1+i & ":Z" & 2+i) 

与你的代码一起使用是类似的,注意我也已经将你的“Dim”移出循环,这不需要创build每个循环,而是需要在每个循环“Set”

 Sub MA() Dim i As Integer Dim MAChart As Chart Dim row1 As Integer, row2 As Integer For i = 1 To 6 Step 2 Set MAChart = ActiveSheet.Shapes.AddChart.Chart With MAChart .ChartType = xlColumnClustered .SetSourceData Source:=ActiveSheet.Range("Q" & i & ":Z" & 1+i) End With Next i End Sub 

您可能还想考虑上面的图表的位置将创build它们在彼此之上。