Excel 2010 – 将数据透视表的数据源从外部更改为工作簿中的工作表

我一直在使用一个外部的.csv文件作为源的数据透视表的问题,特别是在csv文件中的date被视为文本。 所以,我决定将csv文件导入到另一个工作表中,然后通过重新格式化相关列强制date被识别。

我现在遇到的问题是将现有数据透视表更改为使用新工作表中的数据而不是外部源。 如果点击“更改数据源”button,“select表格或范围”选项将变灰。 如果我继续使用外部数据源,然后单击“select连接”button并select新工作表,则会popup一个对话框,提示“所选连接的types不能用于创build数据透视表”。

我也尝试将csv文件转换为xlsx,但有一个类似的问题试图让现有的数据透视表使用它而不是csv作为其源。

是的,这是一个令人讨厌的数据透视表约束。

重新创build并将数据源从.csv更改为.xls文件的步骤:

  1. 创build一个.csv文件,标题名称,出生date,签名。 closures文件。
  2. 将.csv导入新工作簿中的新数据透视表PivotTable1。
  3. 将原始的.csv保存到一个新的工作簿c:\ path \ to \ datasource.xls中,命名工作表数据并确保数据区域的左上angular的单元格位于单元格A1中。

然后我添加下面的VBAmacros并执行它:

Sub getExcelData() With ActiveSheet.PivotTables("PivotTable1").PivotCache .Connection = Array( _ Array("ODBC;DSN=Excel Files;"), _ Array("DBQ=c:\path\to\datasource.xls;"), _ Array("DefaultDir=c:\path\to;DriverId=790;MaxBufferSize=2048;PageTimeout=5;") _ ) .CommandText = _ "SELECT `Data$`.Birthdate, `Data$`.Name, `Data$`.Sign" & vbCrLf & _ "FROM `c:\path\to\datasource.xls`.`Data$` `Data$`" End With End Sub 

该驱动程序的.CommandText语法非常挑剔,而且一点也不聪明。

YMMV在2010年或以后使用此代码和/或使用不同的驱动程序。 即使在更高版本的Excel数据驱动程序中,date和数字数据也是处理不当的。 我通常确保数字或date字段中的每个单元格在导入之前都有一个有效值,或者至less在第一行数据中的每个单元格。

你问了一段时间,但是我也遇到了同样的问题,只是发现了一个解决scheme。 基本上,您可以使用VBA将透视表更改为新的透视caching。 如果新caching使用相同的字段,那么您的布局将被保留。

  1. 根据新的数据源创build一个新的数据透视表(它可以是空的)。
  2. 点击新的数据透视表。
  3. 在即时窗口中键入“?selection.pivottable.cacheindex”,然后按回车。
  4. 请注意数据透视caching的索引号。
  5. 在Excel中,单击您要更改的旧数据透视表。
  6. 在即时窗口中键入“selection.pivottable.cacheindex = x”,其中x是您在步骤4中logging的索引编号。
  7. 对每个要使用新源的数据透视表重复步骤6。
  8. 删除您在第1步中创build的表。

可能需要一步将所有表从一个caching更改为另一个caching,但这可能不是您经常需要执行的操作。

这对于那些不知道即时窗口的人有帮助,但是你需要去开发者标签页并进入Visual Basic Macro窗口,然后按下Ctrl + G来打开最下面的窗口。 原文由mendosi回答自从你问了一段时间,但我也遇到了同样的问题,只是发现了一个解决scheme。 基本上,您可以使用VBA将透视表更改为新的透视caching。 如果新caching使用相同的字段,那么您的布局将被保留。

根据新的数据源创build一个新的数据透视表(它可以是空的)。 点击新的数据透视表。 在即时窗口中键入“?selection.pivottable.cacheindex”,然后按回车。 请注意数据透视caching的索引号。 在Excel中,单击您要更改的旧数据透视表。 在即时窗口中键入“selection.pivottable.cacheindex = x”,其中x是您在步骤4中logging的索引号。对每个要使用新源的数据透视表重复步骤6。 删除您在步骤1中创build的表格。可能需要一步将所有表格从一个caching更改为另一个caching,但这可能不是您经常需要执行的操作。

你有没有尝试打开枢轴向导,并返回到第1步(你想分析的数据在哪里)? 在Excel 2007中打开向导的快捷方式是alt + d + p(或者您可以在快速访问工具栏上放一个button)。 希望这可以帮助。