从分离的 Excel 图中提取数据

从分离的 Excel 图中提取数据

我有一个 Word 文件,里面有一些 Excel 图。不幸的是,我丢失了原始的 Excel 图,并且 Word 文件现在已“解除链接”。

有没有办法找回丢失的图表数据?仅将图表复制回 Excel 似乎不起作用,但我可以看到数据仍然在某处,因为将鼠标悬停在图表上的某个点上会显示值。

答案1

我必须对 PowerPoint 2010 演示文稿执行同样的操作。我认为作为长期解决方案,VBA 脚本是一个不错的选择。但是出于某种原因,我无法让它在我的案例中发挥作用,而且我只需要获取一次数据。(作为结构性解决方案,您可能首先不应该丢失原始数据。)可以这样做:

  1. 将 PPT 文件重命名为具有.zip扩展名
  2. 将生成的档案解压到一​​个文件夹中。
  3. 该文件夹应包含一个ppt/charts/子文件夹。
  4. chart1.xml使用 Excel打开作为 XML 表。(只需打开该文件,Excel 就会询问您如何打开它。)
  5. 文档将包含很多列,其中许多列的每一行的值都相同。其中一列是图表的 x 值。您可以通过将值与演示文稿中看到的值进行比较来找到它。y 值在另一列中,在我的情况下也远低于 x 值(因此 y 数据列中的前几行为空)。
  6. 我发现最简单的方法是将 x 和 y 值复制粘贴到新文档中。
  7. 要验证数据,请选择粘贴的数据并执行“插入”>“图表”>“散点图”>“使用平滑​​线”。第一列应为 x 值,第二列应为 y 值。
  8. 我发现使用原始文件中的一条曲线创建新演示文稿更加容易。但是,如果有很多图表,您可能还会chart2.xml在解压后的文件夹中看到等。如果图表包含多条线,则必须在 XML 中查找其他数据。

答案2

您必须使用 VBA 来提取数据。以下是一种可能的 VBA 解决方案:http://peltiertech.com/WordPress/extract-chart-data/。它包含以下代码:

Sub ExtractChartData()
   Dim iSrs As Long
   Dim cht As Chart
   Dim srs As Series
   Dim ws As Worksheet

   If ActiveChart Is Nothing Then Exit Sub

   Set cht = ActiveChart
   Set ws = Worksheets.Add
   For iSrs = 1 To cht.SeriesCollection.Count
     Set srs = cht.SeriesCollection(iSrs)
     On Error Resume Next
     ws.Cells(1, 2 * iSrs).Value = srs.Name
     ws.Cells(2, 2 * iSrs - 1).Resize(srs.Points.Count).Value = _
         WorksheetFunction.Transpose(srs.XValues)
     ws.Cells(2, 2 * iSrs).Resize(srs.Points.Count).Value = _
         WorksheetFunction.Transpose(srs.Values)
   Next
 End Sub

以下是来自 Microsoft 的另一种可能的解决方案:http://support.microsoft.com/kb/300643(也涉及 VBA)

答案3

如果没有大量数据的话,有一个相当糟糕且粗糙的解决方案。

选择系列,选择图表工具中的布局选项卡,添加数据标签,然后您可以简单地读取值并将其键入到您需要的位置。

相关内容