excel - 生成数据透视表时如何在录制的宏 (VBA) 中使用动态源数据
问题描述
我在个人工作簿中记录的几个宏遇到问题。源数据每天都在变化,这反映在文件名中。录制的宏仍然具有创建之日的文件名,但我需要它来更新新文件名或简单地从当前打开的工作簿/工作表中选择数据源。我对 excel 和 vba 很陌生,所以最好进行简单的修复。谢谢!
Sub MC_PIVOT()
'
' MC_PIVOT Macro
'
'
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"MC_20201106!R1C1:R27951C48", Version:=6).CreatePivotTable TableDestination _
:="Sheet1!R3C1", TableName:="PivotTable1", DefaultVersion:=6
解决方案
通常你会做这样的事情来从活动工作表中的数据创建一个数据透视表
Dim wb As Workbook, wsSource As Worksheet, wsDest As Worksheet
Dim pc As PivotCache, pt As PivotTable
Set wb = ActiveWorkbook
Set wsSource = ActiveSheet
Set wsDest = wb.Sheets.Add(after:=wb.Sheets(wb.Sheets.Count))
wsDest.Name = "Pivot"
'create the pivot cache first
Set pc = wb.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:=wsSource.Range("A1").CurrentRegion, Version:=6)
'...then the pivottable
Set pt = pc.CreatePivotTable(TableDestination:=wsDest.Range("A3"), _
TableName:="PivotTable1", DefaultVersion:=6)
推荐阅读
- python - 如何根据给定列表使用python将数据添加到Excel工作表中的特定行/列?
- can-bus - 使用 CubeMX 和 uVision 5 为 STM32F446RE 编程 CAN 总线
- python - TypeError: 'module' object is not callable 错误。我该如何解决这个问题?
- php - 如何在 Sylius 中上传图像
- post - HTTP POST 到 Google 表单或替代方案
- common-lisp - Common Lisp 在序列的第一个元素上分派
- javascript - 对于任何 `a` 是否保证 `Math.floor(a / a) == 1` 使得 `a / a` 不是 NaN?
- vb.net - Visual Basic 如何使用 3 个 NumericUpDown 组件(或其他方法)增加和减少变量?
- julia - 朱莉娅情节;如何增加样本/数据点的数量?
- logic - 为什么 n 元关系使逻辑语言不可判定?