Excel 创建具有动态范围的透视表
创建可以打开多个文件并向每个文件添加透视表的宏。这些文件的格式与包含透视表所需数据的工作表详细信息相同。但是每个文件都有不同数量的行,所以我尝试使用动态范围来捕获每个文件上的所有数据 上面的编码将打开文件,并根据需要对其进行格式化,以使用透视表Excel 创建具有动态范围的透视表,excel,vba,pivot-table,Excel,Vba,Pivot Table,创建可以打开多个文件并向每个文件添加透视表的宏。这些文件的格式与包含透视表所需数据的工作表详细信息相同。但是每个文件都有不同数量的行,所以我尝试使用动态范围来捕获每个文件上的所有数据 上面的编码将打开文件,并根据需要对其进行格式化,以使用透视表 'Set Dynamic Range Dim startCell As String Dim lastRow As Long Dim lastCol As Long Dim WS As String
'Set Dynamic Range
Dim startCell As String
Dim lastRow As Long
Dim lastCol As Long
Dim WS As String
WS = "Details"
Worksheets(WS).Activate
'Find Last row and column
lastRow = Cells(Rows.Count, Cells(1, 7).Column).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range(Cells(1, 7), Cells(lastRow, lastCol)).Select
Range(Range("G1"), Range("G1").End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Name = "DynamicRange"
Sheets.Add After:=ActiveSheet
' Create Pivot Table
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"DynamicRange", Version:=6).CreatePivotTable TableDestination:= _
"Sheet1!R1C1", TableName:="PivotTable1", DefaultVersion:=6
Sheets("Sheet1").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("PivotTable1")
.ColumnGrand = True
.HasAutoFormat = True
当我到达createpivottable部分时,第一行给出了一个运行时错误代码1004 应尽可能避免使用“选择并激活”。我已经修改了下面的代码。您可能需要重新检查范围值。在创建数据透视表之前,需要定义数据透视缓存和数据透视表
Dim startCell As String
Dim lastRow As Long
Dim lastCol As Long
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim PvtCache As PivotCache
Dim PvtTab As PivotTable
Set ws = Sheets("Details")
'Find Last row and column
lastRow = ws.Cells(ws.Rows.Count, 7).End(xlUp).Row
lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column
ws.Range(ws.Cells(1, 7), ws.Cells(lastRow, lastCol)).Name = "DynamicRange"
Set ws2 = Sheets.Add(After:=ws)
ws2.Name = "PvtTable"
' Create Pivot Table
Set PvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Range("DynamicRange"))
Set PvtTab = PvtCache.CreatePivotTable(ws2.Cells(1, 1), "MyTable")
非常感谢。我真的很感谢你的帮助!