【发布时间】:2018-08-12 16:19:24
【问题描述】:
对此非常陌生,但我会尽量让我的问题易于理解。
我有一个带有数据透视表的 Excel 工作表,我逐个过滤第一列(销售人员姓名),然后将过滤后的数据透视表复制粘贴到新工作表中,并将其保存为销售人员姓名。
是否可以让宏根据表 (Table1) 中的值循环遍历第一列过滤器并将值复制到新工作表中?宏的示例会有所帮助。
更新 - 我在一定程度上管理了一些东西,但它正在复制数据透视表批发,然后尝试用每一行保存一个文件。
Sub Gen()
Dim PvtTbl As PivotTable
Set PvtTbl = ActiveSheet.PivotTables("PivotTable1")
Dim Field As PivotField
Set Field = ActiveSheet.PivotTables("PivotTable1").PivotFields("SPerson")
Dim PvtItm As PivotItem
Dim Range As Range
Dim i As Long
Dim var As Variant
Application.ScreenUpdating = False
For Each PvtItm In Field.PivotItems
ActiveSheet.Range("$A$11").Select
Selection.CurrentRegion.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs ("C:\" & ActiveSheet.Range("$B$2") & Format(Date, "yyyy - mm") & ".xlsx")
Next PvtItm
Application.ScreenUpdating = True
End Sub`
其中 $A$11 是数据透视表,$B$2 是我要将文件另存为的销售人员的姓名。
【问题讨论】:
-
为什么不直接使用您的数据透视表所依据的数据?
-
数据巨大,位于 Access 数据库中。我们通过销售人员的数据透视表提供了一个汇总视图,我手动为每个销售人员制作了单独的文件(现在希望如此)。只是试图自动化这些步骤,但我似乎无法让 vba 过滤数据透视字段(“SPerson”)。
-
最后可能无关紧要,但是你用的是什么版本的Excel?
-
我使用的是 Excel 2010
-
@Qharr 的方法有效,必须稍微调整一下并允许用户选择他们想要保存的文件夹。当溺水停止时,我会发布我所做的事情。感谢所有帮助过的人!
标签: vba excel pivot-table