【问题标题】:VBA to extract series name, X, and Y values from Excel ChartVBA 从 Excel 图表中提取系列名称、X 和 Y 值
【发布时间】:2016-03-07 16:33:47
【问题描述】:

我正在寻求有关从 Excel 图表中提取数据的帮助。具体来说,我需要从图表上的所有点提取 系列名称XY 值。我从 Excel 的基本代码开始,但它只给了我 X 值。

Sub GetChartValues()
Dim NumberOfRows As Integer
Dim X As Object
Counter = 2

' Calculate the number of rows of data.
NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)

Worksheets("ChartData").Cells(1, 1) = "X Values"

' Write x-axis values to worksheet.
With Worksheets("ChartData")
  .Range(.Cells(2, 1), _
  .Cells(NumberOfRows + 1, 1)) = _
  Application.Transpose(ActiveChart.SeriesCollection(1).XValues)
End With

' Loop through all series in the chart and write their values to
' the worksheet.
For Each X In ActiveChart.SeriesCollection
  Worksheets("ChartData").Cells(1, Counter) = X.Name

  With Worksheets("ChartData")
     .Range(.Cells(2, Counter), _
     .Cells(NumberOfRows + 1, Counter)) = _
     Application.Transpose(X.Values)
  End With

  Counter = Counter + 1
Next

End Sub

我需要弄清楚如何进行这项工作,以便创建给定值的表格。我还附上了我正在处理的图表的图像。任何帮助将不胜感激!

【问题讨论】:

    标签: vba excel charts


    【解决方案1】:

    试一试,确保在运行代码之前选择您的图表:

    Sub Getting_data()
    
       Dim iSrs As Long
       Dim cht As Chart
       Dim srs As Series
       Dim wkst As Worksheet
    
       If ActiveChart Is Nothing Then Exit Sub
    
       Set cht = ActiveChart
       Set wkst = Worksheets.Add
       For iSrs = 1 To cht.SeriesCollection.Count
           Set srs = cht.SeriesCollection(iSrs)
           On Error Resume Next
           wkst.Cells(1, 2 * iSrs).value = srs.Name
           wkst.Cells(2, 2 * iSrs - 1).Resize(srs.Points.Count).value = _
               WorksheetFunction.Transpose(srs.XValues)
           wkst.Cells(2, 2 * iSrs).Resize(srs.Points.Count).value = _
               WorksheetFunction.Transpose(srs.Values)
       Next
    
    End Sub
    

    【讨论】:

    • 非常感谢!您是否认为有一种方法可以自动化创建的表格并将它们更改为我发布图片的火车和车站时间表?基本上,系列名称是“Train Identification”,Y值对应于KM中的车站位置,每个车站都有特定的位置。 X 值表示火车到达特定车站的时间。
    • 如果没有看到运行代码后生成的数据,很难给出建议,但听起来完全有可能做到这一点。根据所需的数据处理级别,可以仅使用 excel 公式来完成;如果,VLOOKUP....
    • 好的,谢谢!我现在将尝试内置函数,看看是否可以让它按照我需要的方式工作。
    • 我第一次使用它时效果很好,但是我无法复制它。我不断收到“编译错误:预期的结束子”
    猜你喜欢
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多