我有一个excel工作簿,其中有几个数据透视表,指的是工作簿中包含的数据。数据透视表引用的所有数据都包含在此工作簿中(“版本1”)。
我想将此工作簿重命名为“版本2”,但是当我重命名工作簿时,所有数据透视表都会引用“版本1”数据。我希望数据透视表能够引用“版本2”中的数据。
我尝试了几种选项设置组合,但是我找不到自动将数据透视表源引用更改为新命名的“版本2”的设置组合。
据我所知,可以编写一个vba脚本来解决这个问题,但我想知道是否存在非vba解决方案。
答案 0 :(得分:1)
我遇到了这个问题(使用Excel 2013)。在简单文件复制\重命名并打开复制\重命名文件后,excel开始抱怨安全性(外部数据源),我无法刷新数据透视表(消息“无法打开数据透视表源文件xxx”,其中xxx是旧文件名)
1)如何修复损坏的工作簿:
激活数据透视表(将光标置于其中),以便显示“PIVOTTABLE TOOLS”功能区。单击ANALYZE和更改数据源按钮。将carrent放入文本框(不要使用箭头键!)并删除包含周围[]字符的文件名。刷新数据透视表。 对工作簿中的每个数据透视表执行此操作。 完成。
2)如何摆脱这个讨厌的问题:
我打开原始\固定工作簿。激活'PIVOTTABLE TOOLS \ ANALYZE'功能区。单击“选项”按钮(我的Excel中功能区的左侧),切换到“数据”选项卡,然后取消选中“使用文件保存源数据”。忽略警告(只是确定)。现在我可以按照自己的意愿复制\ rename文件,并且完全没有问题......
3)解决方法(只是为了安全) - 永远不要在Windows资源管理器或其他文件管理器中复制工作簿,而是在Excel中使用另存为功能 - 只需打开要复制的工作簿即可并使用另存为
答案 1 :(得分:1)
VBA代码如下:
Sub Update_PivotTables_Source()
Dim currWS As Worksheet
Dim currPT As PivotTable
On Error Resume Next
For Each currWS In Application.Worksheets
For Each currPT In currWS.PivotTables
currPT.SourceData = Mid(currPT.SourceData, InStr(1,currPT.SourceData, "!") + 1)
Next currPT
Next currWS
End Sub
这篇文章中提到的所有其他非VBA解决方案对我来说都不起作用。
答案 2 :(得分:1)
问题是文件格式.xlsx。
我解决了以下问题:
点击兼容性检查器上的继续弹出
点击弹出窗口上的YES,询问是否因为Excell的早期版本而重新计算所有公式。
如果你有多个支点,那么必须重做一些数据源。保存并保存后,它可以工作。它将数据区域保留为数据透视表的源。
一旦你切换到.xlsx,问题就会回来。
答案 3 :(得分:0)
这是解决方案:
我没有看到任何真正的解决方案在这个线程上很简单 我发帖了。这种方法似乎对我有用。
在Windows资源管理器中,右键单击该文件并选择复制。然后 粘贴到同一文件夹中。新文件将创建为'filename 复制'。然后,您可以根据需要重新编辑文件名(即。 新的约会)。然后,您可以更新您拥有的任何数据表 并且数据透视表将引用其内部的那些表 文件而不是旧文件。
谢天谢地,这很有效!
希望它可以帮助其他人!
菲尔
答案 4 :(得分:0)
我想我可能找到了解决方案。这对我有用:
执行所有这些步骤后,问题仍未返回。我可以使用“另存为”自由移动此工作簿或在Windows资源管理器中复制。
答案 5 :(得分:0)
点击分析 - >更改数据源 - >表/范围:如果文件已被移动,则更新Excel文件名和/或文件夹源。
这应解决问题
答案 6 :(得分:0)
转到您的源标签/表格,点击表格工具中的设计,然后在调整大小表格上方的左上角为其指定唯一的表格名称,例如“数据”。然后单击进入您的数据透视表分析更改数据源,并输入您刚刚为该表指定的名称(在我们的示例中为“数据”)并确认。关键是您的数据透视表仅引用表名,而不引用文件名。对所有其他枢轴重复上述操作,现在不管您的文件名是什么,枢轴都应该更新。
答案 7 :(得分:0)
我找到了另一个!!