【问题标题】:Change a Pivot table Source to a different workbook (based on cell value)将数据透视表源更改为不同的工作簿(基于单元格值)
【发布时间】:2016-05-25 14:28:29
【问题描述】:

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

我想出的解决方案是使用数据透视表(每个文件一个数据透视表)排列数据,然后使用将数据复制到另一个工作簿的 VBA 代码合并它们(已经完成)。

问题是我需要手动更改所有这些文件的数据源,而且打开每个文件都需要时间,因为它们很重(10mb)。

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

示例文件 1

来源 4 月第 3 周:'C:\ACreative\April\3[Coop.XLS]Sheet1'!$A$6:$BJ$30000

来源 4 月第 4 周:'C:\ACreative\April\4[Coop.XLS]Sheet1'!$A$6:$BJ$30000

来源 May 第 1 周:'C:\ACreative\May\1[Coop.XLS]Sheet1'!$A$6:$BJ$30000

来源 May 第 2 周:'C:\ACreative\May\2[Coop.XLS]Sheet1'!$A$6:$BJ$30000

示例文件 2

来源 4 月第 3 周:'C:\ACreative\April\3[File2.XLS]Sheet1'!$A$6:$BJ$30000

来源 4 月第 4 周:'C:\ACreative\April\4[File2.XLS]Sheet1'!$A$6:$BJ$30000

来源 May 第 1 周:'C:\ACreative\May\1[File2.XLS]Sheet1'!$A$6:$BJ$30000

来源 May 第 2 周:'C:\ACreative\May\2[File2.XLS]Sheet1'!$A$6:$BJ$30000

我坚持的解决方案是在一个单元格上写入 (\April\3\ ; \May\1),并根据该“路径+单元格值”更新源,但我愿意接受另一个。

谢谢!!!

【问题讨论】:

    标签: excel vba pivot datasource auto-update


    【解决方案1】:

    Macro Recorder 是你的朋友。

    只要您知道不同的数据源都将滑入相关数据透视表中,请尝试使用以下 VBA sn-p 在同一工作簿或其他工作簿范围之间快速切换。

    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
    

    请注意,我在本地工作簿中使用了一些命名范围来辅助宏。我上传了some sample files here,而不是上传截图,这样你就可以自己动手,而不是试图解释论坛帖子上的静态图片。

    希望对你有帮助!

    【讨论】:

    • 漂亮!适合作为手套。谢谢!
    • 实际上...我遇到了一些麻烦...当我在其他工作簿上使用宏时无法更改源...'C:\ACreative\Análises\Sell Out\ REWORKING\Consolidar\Download\Maio\30[Coop.xlsx]Vendas por Loja'!$A$6:$BJ$30000 我不知道这是否是一个 excel 配置问题......也许出现的那个单引号有问题一开始?我不确定,已尝试删除它们但仍然收到错误。
    • 尝试使用 R1C1 格式来引用范围。在您的示例中 - $A$6:$BJ$30000 将变为 R6C1:R30000C62
    • 还可以尝试使用macro recorder 来捕获您想要完成的操作。通常是这样一个简单的语法问题,宏记录会平滑处理(尽管可能会添加 LOT 的额外代码)。
    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2014-03-10
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2019-01-20
    • 2022-09-27
    相关资源
    最近更新 更多