Excel 中从图表中提取数据的宏

文章翻译 文章翻译
文章编号: 300643 - 查看本文应用于的产品
有关本文的 Microsoft Excel 2000 版本,请参阅 213814
有关本文的 Microsoft Excel 98 版及较低版本,请参阅 137016
展开全部 | 关闭全部

本文内容

概要

在 Microsoft Excel 中,您可以从图表中检索数据,甚至当数据位于外部工作表或工作簿中时也可以对其进行检索。如果图表是从另一个文件创建的或链接至另一个文件,而在该文件不可用或遭到一定程度的破坏时,此方法非常有用。当图表的源数据丢失后,仍然可以使用 Microsoft Visual Basic for Applications 宏从该图表自身中检索该数据。

更多信息

Microsoft 提供的编程示例仅用于说明,对其不做任何明示或暗示的保证。这包括但不限于对适销性或特定用途适用性的暗示保证。本文假定您熟悉所演示的编程语言及用于创建和调试过程的工具。Microsoft 支持工程师可以帮助解释某个特定过程的功能,但他们不会修改这些示例以使其具有可以满足特定需要的额外功能或构建过程。

下面的宏示例将图表的源数据放置在活动工作簿中一个名为“ChartData”的工作表中,并将第一列和第一行作为开始位置。
  1. 在模块表中输入下面的宏代码:
    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
    					
  2. 在您的工作簿中插入一个新的工作表,并将其重命名为“ChartData”(不加引号)。
  3. 选择要从中提取基础数据值的图表。

    注意:可以将图表嵌入到工作表中或是单独的图表工作表中。
  4. 运行 GetChartValues 宏。

    图表中的数据将被放置到“ChartData”工作表中。

将图表链接到已恢复数据的步骤

要使图表与已恢复数据进行交互,您需要将图表链接到新的数据表中,而不是丢失或已损坏的工作簿中。
  1. 选择所需图表,然后单击某一系列以查找在已损坏或丢失的工作簿中链接该图表的表名称。表名称将显示在编辑栏中的系列公式中。

    注意:表名称可跟在工作簿名称之后(工作簿名称包含在方括号中,如“[Book1]”),并位于感叹号“!”(或撇号和感叹号“'!”)的前面,表示单元格引用的开始位置。表名称只包含右方括号“]”与感叹号(或撇号和感叹号)之间的字符。如果任一撇号紧靠在感叹号的前面,请省去该撇号,因为撇号不能是表名称的最后一个字符。
  2. 双击名为“ChartData”的新表的制表符。
  3. 在突出显示的“ChartData”上键入步骤 1 中创建的原始表名称,然后按 Enter。此名称必须与已损坏或丢失的工作簿中的表名称相同。
  4. 如果您尚未保存这个具有图表和数据表的文件,请保存此文件。
  5. 在 Excel 2003 或 Excel 2002 中,单击“编辑”菜单上的“链接”,然后单击“更改源”。

    在 Excel 2007 中,单击“数据”选项卡,单击“连接”组中的“编辑链接”,然后单击“更改源”。
  6. 在“源文件”框中,选择要更改的链接,然后单击“更改源”。
  7. 在“更改链接”对话框中,选择包含已恢复数据和图表的新文件,然后单击“确定”。
  8. 如果您收到以下错误消息:
    Your formula contains an invalid external reference to a worksheet.
    这很可能是因为您在步骤 3 中键入的表名称与原始名称不同。转回到步骤 1。
  9. 现在,“源文件”框可能为空。这表示所有链接都指向活动文件,而不是丢失或已损坏的文件。单击“关闭”。
现在,该图表引用的便是活动工作簿中重命名工作表中的已恢复数据并能够与其进行交互。

属性

文章编号: 300643 - 最后修改: 2007年2月26日 - 修订: 4.1
这篇文章中的信息适用于:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 标准版
关键字:?
kbhowto kbprogramming kbdtacode KB300643
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com