Excel – 在多个工作表上复制透视表并粘贴为值(保留格式)
这是我的项目:
我从一个中央Excel文件中创build了一个关于物品定价和数据的数据透视表。 我做了“显示filter页面”,为特定字段中的每个唯一条目创build不同的工作表(创build超过100个工作表)。 我将所有生成的数据透视表移动到他们自己的工作簿(标题为PivotTableResults)。
我想要做的是自动复制数据透视表数据,然后作为值粘贴到数据透视表下的下一个可用空白行。 然后再次粘贴相同的数据透视表,以保留书中所有工作表的格式。
我遵循此build议完成数据透视表粘贴值/格式: http : //spreadsheetpage.com/index.php/tip/unlinking_a_pivot_table_from_its_source_data/
这是我现在的代码:
Application.ScreenUpdating = False Dim ws As Worksheet Dim pt As PivotTable Set pt = ActiveSheet.PivotTables(1) For Each ws In ActiveWorkbook.Worksheets Dim NextRow As Range Set NextRow = ws.Cells(Cells.Rows.Count).End(xlUp).Offset(1) For Each pt In ws.PivotTables 'ws.PivotTables("pt").PivotSelect "", xlDataAndLabel, True pt.TableRange2.Copy Set CurrentRow = NextRow CurrentRow.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False CurrentRow.Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Next pt Next ws End Sub
有什么build议么?
这段代码
Set NextRow = ws.Cells(Cells.Rows.Count).End(xlUp).Offset(1)
select工作表的最后一列,这就是为什么你不能粘贴超过一列的东西。 你需要修改findNextRow
的逻辑。
编辑:
这个小小的改变就可以做到:
Set NextRow = ws.Cells(Cells.Rows.Count, 1).End(xlUp).Offset(1)
显然,Cells()的默认ColumnIndex
参数不是1,您需要明确地设置它。