VBA 用于具有 N/A 或动态范围的动态图表数据

VBA for Dynamic Chart Data with N/A or Dynamic Range

我可以为所需的列定义列和数据,然后为动态范围定义列和数据

但我如何将其转换为“图表数据”选项卡下 excel 文件中的复杂图表

谁能指点一下

Sub create_graph()

Dim ws  As Excel.Worksheet
Dim x As Range
Dim y As Range

Set ws = ActiveWorkbook.Worksheets("Chart Data")

Set x = ws.Range("B8:B" & ws.Cells(ws.Rows.Count, "B").End(xlUp).Row)
Set y = ws.Range("C8:B" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)

ws.Shapes.AddChart.Select
With ActiveChart
    .ChartType = xlLine
    .SeriesCollection.NewSeries
    .SeriesCollection(1).Values = x
  End With

End Sub

现在这里有2个问题

图表图片 [1]: https://i.stack.imgur.com/4ElYu.jpg

图表没有那么复杂。但是您的数据布局不佳。 Y值列中的#N/A不会绘制点,但日期列中的所有空白都会让你感到困惑。

删除第 33 行下方的所有行。它们会破​​坏图表。

现在 select 范围 A7:R33,然后在功能区的“插入”选项卡上,选择 Table。这会将范围转换为 Table,这是一种具有高级属性的数据结构。

确保图表使用 Table 的列作为其数据。

当您将新数据添加到 Table 下方的行时,Table 会注意到并扩展以包含添加的行。引用整行 Table 的公式也将扩展以包含新行。这意味着图表将展开以包含新数据。

这是我很久以前写的关于 Tables 神奇的动态特性的教程:Easy Dynamic Charts Using Lists or Tables