【问题标题】:Draw multiple tables in a plot using vba in excel在excel中使用vba在绘图中绘制多个表格
【发布时间】:2017-07-13 21:25:35
【问题描述】:

如您所见,我是 excel 的初学者编码器。我正在尝试在 excel 中制作折线图,每个图都有多个系列。

例如,第一个图表需要标记为“电压”,并且需要在第二行的电压列下包含数据。

图表的数量取决于电池监视器的数量,在这种情况下我有 4 个。

非常抱歉,我不知道如何在这里上传文件。但是包含数据的表被 10 列分隔,因此它们不会彼此相邻。

Sub test()

Dim Chart1 As ChartObject

Set Chart1 = Sheets("Sheet1").ChartObjects.Add(52, 0, 1000, 500)
With Chart1.Chart
    .SetSourceData Source:=Sheets("Sheet1").Range("H3:H2502")
    .ChartWizard Title:="Voltage", HasLegend:=True, CategoryTitle:="Time (s)", ValueTitle:="Voltage", Gallery:=xlLineStacked

    '.Legend = "Battery 1"        This does not work

End With

End Sub

如何控制图例文本? 如何向此图表添加另一组数据?

非常感谢您的宝贵时间

【问题讨论】:

  • 您能更详细地描述一下您的工作表吗? H3:H2502是你的电池1数据吗?电池 2 的数据会是 I3:I2502 吗?其他 3 个图表将去哪里?还是您的意思是所有 4 节电池都将在同一张图表上?
  • 我很抱歉不清楚。我只是想出了如何添加其他表 '.SeriesCollection.NewSeries .SeriesCollection(2).Values = Sheets("Sheet1").Range' 但是,我还不知道如何更改图例文本
  • @Vik:如果你显示屏幕截图,你的问题解决得更快。

标签: vba excel plot


【解决方案1】:

.SeriesCollection(n).name 是传说中的项目。

Sub test()

    Dim Chart1 As ChartObject
    Dim Cht As Chart
    Dim n As Integer

    Set Chart1 = Sheets("Sheet1").ChartObjects.Add(52, 0, 1000, 500)
    Set Cht = Chart1.Chart

    With Cht
          .HasTitle = True
         .ChartType = xlLineStacked
         .Legend.Position = xlLegendPositionRight
         With .ChartTitle
             .Characters.Text = "Voltage"
             .Characters.Font.Size = 12
         End With

         .SeriesCollection.NewSeries 'Add series
         n = n + 1
         With .SeriesCollection(n)
             .Name = "Battery 1"
             .XValues = Range("a1:f1")
             .Values = Range("a2:f2")
          End With
         .SeriesCollection.NewSeries 'Add series
         n = n + 1
         With .SeriesCollection(n)
             .Name = "Battery 2"
             .XValues = Range("a1:f1")
             .Values = Range("a3:f3")
         End With
         .Axes(xlValue, xlPrimary).HasTitle = True
         .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Votage"
         .Axes(xlCategory, xlPrimary).HasTitle = True
         .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (s)"
    End With

End Sub

【讨论】:

  • 非常感谢 Dy.Lee。你已经做了很多工作。干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 2022-11-12
相关资源
最近更新 更多