你目前正处于脱机状态,正在等待 Internet 重新连接

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

针对 Office 2003 的支持已终止

Microsoft 已于 2014 年 4 月 8 日终止了针对 Office 2003 的支持。该更改已影响到您的软件更新和安全选项。 了解这一措施对于您的含义以及如何继续保持受保护状态。

有关本文的 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   NextEnd 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. 现在,“源文件”框可能为空。这表示所有链接都指向活动文件,而不是丢失或已损坏的文件。单击“关闭”。
现在,该图表引用的便是活动工作簿中重命名工作表中的已恢复数据并能够与其进行交互。
link unlink recover corrupt damage repair inf XL2002 XL2003 XL2007
属性

文章 ID:300643 - 上次审阅时间:02/26/2007 12:42:00 - 修订版本: 4.1

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 标准版

  • kbhowto kbprogramming kbdtacode KB300643
反馈