【问题标题】:Excel VBA plotting every column against anotherExcel VBA绘制每一列与另一列
【发布时间】:2018-08-29 09:13:07
【问题描述】:

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

我有 17 列,大约 100 行。我想将每一列与另一列进行对比。将范围定义为 A1:S100 不是解决方案。

我应该绘制 A vs B、A vs C、A vs D 等等直到 A vs S,然后 B vs A、B vs C、B vs D 等等,直到最后 S vs R。我不是能够弄清楚如何以数字方式编写范围并将其放入循环中。以下代码不起作用。

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

【问题讨论】:

  • 那是很多图表...
  • 有时我只有 6 或 5 列。那么我想使用相同的宏。

标签: excel vba plot scatter-plot


【解决方案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

【讨论】:

  • 谢谢。我必须学习这个东西:Union(r.Columns(c1),r.Columns(c2)) Set r = Range("A1:D20") 有什么意义?从Ctrl-home到Ctrl-end的整个表格(Rows.Count,Columns.Count)不是范围吗?
  • 是的,您可以随意定义范围,这只是一个示例。
  • 感谢您的帮助。定义范围正是我想要学习的。如何针对第 15 列的第 3 到 20 行指定第 8 列的第 3 到 20 行?当我手动绘制系列时,我可以看到 Excel 写入的内容,但是如何更改这些数字以将它们指定为(整数或长)变量?
  • 你是说你不想做所有的组合,而只是选择的?在上面的代码中,您可以使用Union(r.Columns(8), r.Columns(15)) 并相应地定义r
  • 不,不。您的解决方案非常适合我的实际工作,但我也在尝试并行学习。如果我手动绘制,我会得到类似 =SERIES(,Sheet1!$F$3:$F$8,Sheet1!$H$3:$H$8,1) 的内容。我怎么能用变量来写这个?有没有靠谱的方法?假设我不想要整个列,而是从第 k1 行到第 k2 行的有限集合。
【解决方案2】:

您正在寻找的是这样的语法:

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 循环来创建循环范围选择。

【讨论】:

  • 这如何回答有关创建图表的问题?这只是在循环中为单元格着色...
  • 循环列是我的问题所在。我只是一个初学者。我必须使用数字而不是“A”和“C”。
【解决方案3】:

请尝试以下代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多