使用数组而不是范围的折线图

时间:2016-05-16 17:52:09

标签: arrays excel vba excel-vba charts

所以我有一个生成3个One-Dimensional Arrays的代码(每个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")

'有点迷失在这里我不知道如何激活图表,或者如果定义一个"图表"之间的重要区别。和" chartObject"

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视频,但他们开始使用" Parent"图表的属性...我想要的是使用数组创建一个包含2行和日期作为x值的折线图。

1 个答案:

答案 0 :(得分:0)

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

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