首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据透视表源更改为不同的工作簿(基于单元格值)

将数据透视表源更改为不同的工作簿(基于单元格值)
EN

Stack Overflow用户
提问于 2016-05-25 14:28:29
回答 1查看 1.7K关注 0票数 0

我必须每周更新一个有大约15个工作簿的数据库。

我想出的解决方案是用pivot表(每个文件有一个枢轴表)来安排数据,然后用VBA代码将数据复制到另一个工作簿(已经完成了)。

问题是,我需要手动更改所有这些文件的数据源,而且打开每个文件也需要时间(10 as )。

最优的是修改每个文件的源代码,查看另一个文件夹(4月1, 2,3,4 // 5月第1,2,3,4周.)

示例文件1

资料来源:4月3日:'C:\ACreative\April\3Coop.XLSSheet1'!$A$6:$BJ$30000

资料来源:4月4日:'C:\ACreative\April\4Coop.XLSSheet1'!$A$6:$BJ$30000

资料来源:5月1日:'C:\ACreative\May\1Coop.XLSSheet1'!$A$6:$BJ$30000

资料来源:5月2日:'C:\ACreative\May\2Coop.XLSSheet1'!$A$6:$BJ$30000

示例文件2

资料来源:4月3日:'C:\ACreative\April\3File2.XLSSheet1'!$A$6:$BJ$30000

资料来源:4月4日:'C:\ACreative\April\4File2.XLSSheet1'!$A$6:$BJ$30000

资料来源:5月1日:'C:\ACreative\May\1File2.XLSSheet1'!$A$6:$BJ$30000

资料来源:5月2日:'C:\ACreative\May\2File2.XLSSheet1'!$A$6:$BJ$30000

我想要的一个解决方案是在一个单元格上写(\path+cell\3 \May\1),并根据那个“值”更新源代码,但是我对另一个值是开放的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-25 16:56:49

宏记录器是你的朋友。

只要您知道不同的DataSources都会滑到问题的枢轴表中,那么就尝试下面的VBA代码片段,在相同的工作簿或其他工作簿范围之间快速切换。

代码语言:javascript
运行
复制
Sub ChangeDataSource()
    Dim DataSource As String
    Dim Green As Long, Red As Long
    Green = -11489280
    Red = -16776961

On Error GoTo ErrHandle

    DataSource = Range("DataSource").Value
    ActiveSheet.PivotTables("PivotTable1").ChangePivotCache ActiveWorkbook. _
        PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataSource, Version _
        :=xlPivotTableVersion15)

    Range("DataSource").Font.Color = Green
    Range("CurrentDataSource").Value = DataSource
    Calculate

    GoTo Success

ErrHandle:
    MsgBox ("DataSource is not valid.")
    Range("DataSource").Font.Color = Red

Success:

End Sub

注意,我在本地工作簿中使用了一些命名范围来帮助宏。我上传了这里有一些示例文件,而不是上传屏幕截图,这样你就可以在自己周围窥探,而不是试图在论坛上解释静态图片。

希望能帮上忙!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37440156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档