【发布时间】:2018-07-27 00:17:43
【问题描述】:
如何移动数据透视表的位置,以确保它在刷新时不会与下方的另一个数据透视表重叠?
我有 10 个数据透视表,其列跨度始终等于 A:E。
行将随着枢轴刷新而动态更新。
我希望在每个新数据透视表开始之前有 2 个空白行,所以我使用以下解决方法
(其他问题表明您不能在数据透视表刷新时直接插入行以阻止它们重叠,这是我试图遏制/解决的根本问题)
- 禁用自动计算
- 循环遍历所有枢轴 (
pvt) - 将轴偏移
(LRow, 6).... 新列跨度现在是G:K - 刷新枢轴(将在下一个循环中更新
LRow,因为表格调整大小) - 下一个枢轴
- 重新启用自动计算和删除列
A:F,这意味着枢轴将回到原来的起点,跨越列A:E,同时在每个枢轴之间留下2个空行。
问题在于pvt.PivotTableWizard TableDestination:=Range("G" & lrow) 不会移动数据透视表(或似乎做任何事情)。
Sub MovePivots()
Dim pvt As PivotTable, LRow As Long
Application.Calculation = xlCalculationManual
For Each pvt In PivotTables
LRow = Range("G" & Rows.Count).End(xlUp).Offset(2).Row
pvt.PivotTableWizard TableDestination:=Range("G" & LRow)
pvt.PivotCache.Refresh
Next pvt
Application.Calculation = xlCalculationAutomatic
Range("A:F").EntireColumn.Delete
End Sub
【问题讨论】:
-
1.
PivotTable.PivotTableWizardMethod 创建并返回一个PivotTable对象 - 您不能使用它来遍历现有的数据透视表并移动它们。 2. 这可能会变得棘手;在测试中,Excel 不一定从页面顶部向下循环遍历数据透视表。 -
枢轴是按照它们出现的顺序创建的,所以我想它会按照@BigBen 的顺序移动它们。无论哪种方式,一旦我弄清楚如何实际移动一个物流就可以解决!我也尝试过
.Location属性,但没有太多关于它的阅读信息。大多数问题似乎都在说如何移动图表,而我无法扩展到枢轴。所以我在这里,任由 SO (clenches) -
PivotTable.TableRange2.Cut应该移动它。 -
请参阅peltiertech.com/referencing-pivot-table-ranges-in-vba,获取有关如何引用数据透视表范围的重要资源。
标签: excel vba pivot-table