【问题标题】:Line Chart using Arrays instead of Range使用数组而不是范围的折线图
【发布时间】:2016-05-17 05:38:42
【问题描述】:

所以我有一个生成 3 个一维数组(每个 30 个元素)的代码。第一个数组有日期(x 值),其他 2 个数组有数字(1 是公司 K 的销售额,2 是当天 M 公司的销售额)。现在我想使用 VBA 将这些数组用作系列。我遇到了一个简单的代码并试图将它用于我的目的......但这是我第一次在 vba 中使用图表,而且我从一开始就不擅长制作图表。请帮忙!

您可以假设我有 DateSales_KSales_M 作为索引从 1 到 30(30 个条目)的数组

Dim myChart As Chart

Dim mySeries As Series

Set myChart = Charts.Add

Set myChart = myChart.Location(Where:=xlLocationAsObject, Name:="Sheet1")

'有点迷路了,我不知道如何激活图表,或者定义“图表”和“图表对象”之间是否存在重要区别

Set myChart = ActiveChart  

Set mySeries = myChart.SeriesCollection(1)


series.xvalues = Date

series.values = Sales_K 'How do I add Sales_M y value series?? 

请尽量简单。我尝试在图表上观看一些 youtube 视频,但他们开始使用图表的“父”属性进入 chartObjects ......我想要的只是创建一个折线图,其中包含 2 条线和日期作为 x 值使用数组。

【问题讨论】:

  • 首先不要使用保留字 Date 作为数组名称。 Date 是一个 VBA 函数,它重新定义当前日期。所以使用 myDate 或其他东西......

标签: arrays vba excel charts


【解决方案1】:

您可以通过 newSeries 方法添加另一个系列,如下所示。如果您愿意,也可以重复使用相同的 XValue。

ChartObject 是占位符对象,Chart 包含所有细节(简单的放置方式)。

Public Sub makeChart()

  Dim ch As Chart
  Dim ws As Worksheet
  Dim arr1 As Variant, arr2 As Variant, arr3 As Variant
  Dim ser As Series, ser2 As Series

  Set ws = Sheet5
  Set ch = ws.chartObjects.Add(Left:=100, Top:=100, Width:=500, Height:=400).Chart
  ch.ChartType = xlLine

  arr1 = Array(10, 15, 12, 25, 35, 20)
  arr2 = Array(17, 33, 20, 45, 11, 40)
  'arr3 = Array("01/05/2016", "02/05/2016", "03/05/2016", "04/05/2016", "05/05/2016", "06/05/2016")
  arr3 = Array(DateValue("01/05/2016"), DateValue("02/05/2016"), DateValue("03/05/2016"), _
              DateValue("04/05/2016"), DateValue("05/05/2016"), DateValue("06/05/2016"))

  Set ser = ch.SeriesCollection.NewSeries
  ser.XValues = arr3
  ser.Values = arr1
  Set ser2 = ch.SeriesCollection.NewSeries
  ser2.Values = arr2

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多