Excel VBA将每一列与另一列作图

时间:2018-08-29 09:13:08

标签: excel-vba plot scatter-plot

在R中使用pairs()命令执行此操作很简单。但是在Excel VBA中,这似乎很复杂。

我有17列,大约有100行。我想将每一列都绘制在另一列上。将范围定义为A1:S100不是解决方案。

我应该绘制A对B,A对C,A对D等,直到A对S,然后对B对A,B对C,B对D等等,直到最后对S对R。能够弄清楚如何以数字方式写入范围并将其置于循环中。以下代码无效。

    ActiveSheet.Shapes.AddChart(xlXYScatter).Select
    ActiveChart.SetSourceData Source:=Range(Cells(k1, 1), Cells(k2, N)), PlotBy:=xlColumns

3 个答案:

答案 0 :(得分:1)

您要寻找的是这样的语法:

Sub LoopRows()
  Dim i As Integer
  For i = 9 To 30
    ActiveSheet.Range("L" & i & ":DC" & i).Interior.Color = RGB(100, 100, 100)
  Next i
End Sub

此示例仅格式化每一行中单元格的颜色。注意我如何使用for循环创建循环范围选择。

答案 1 :(得分:1)

这可能会帮助您。我认为有17列内容会给您带来麻烦。

Sub x()

Dim r As Range, c1 As Long, c2 As Long, ch As Chart

Set r = Range("A1:D20")

For c1 = 1 To r.Columns.Count
    For c2 = 1 To r.Columns.Count
        If c1 <> c2 Then
            Set ch = ActiveSheet.Shapes.AddChart.Chart
            ch.ChartType = xlXYScatter
            ch.SetSourceData Source:=Union(r.Columns(c1), r.Columns(c2))
        End If
    Next c2
Next c1

End Sub

答案 2 :(得分:0)

请尝试以下代码:

Set rng = Worksheets("No-Funding").Cells(x, 2)
Set rng = Worksheets("No-Funding").Range(Chr(64 + x) & 2)

有关更多信息,请查看以下链接:    EXCEL-VBA Change a range with a loop