从多个dynamic合并范围创buildExcel VBA自动数据透视表

我试图自动从一个dynamic的数据表中创build一个数据透视表的过程,这个数据表总是以表格上方的一个date开始的。 CountExpos计算数据范围中的date数,以便代码知道需要将多less个数据表input到具有多个合并范围的数据透视表中。 然后,代码根据第一个date开始的位置生成一串数据范围,并根据有多less个expo计数将相应的数据范围添加到string中。 然后它build立一个string(statString),它可以直接放置在从SourceData开始的数据透视表的创build中,以版本结束,然后代码应该输出数据透视表,而是返回运行时错误'1004':Application定义或对象定义的错误。

即使我直接将statString的输出复制粘贴到数据透视表代码中,数据透视表也会被创build,但是当我inputstatString时,代码将无法运行。 我会感谢任何帮助,谢谢!

Sub CountExpos() Dim lastRow As Long Set sht = ThisWorkbook.Worksheets("Orc Text") For i = 1 To 1000 If IsEmpty(sht.Cells(i, 1)) = False Then lastRow = i End If Next i Dim expoCount expoCount = 0 For J = 1 To lastRow If IsDate(sht.Cells(J, 1)) = True Then expoCount = expoCount + 1 End If Next J MsgBox (expoCount) Dim count count = 0 ReDim expos(0 To expoCount) As String ReDim rgs(0 To expoCount) As String For Y = 1 To lastRow If IsDate(sht.Cells(Y, 1)) = True Then expos(count) = sht.Cells(Y, 1) rgs(count) = "Array(" & Chr(34) & "'Orc Text'!R" & (Y + 3) & "C1:" & "R" & (Y + 12) & "C10" count = count + 1 End If Next Y Dim statString As String statString = " Array(" For X = 0 To expoCount - 1 If X = expoCount - 1 Then statString = statString & rgs(X) & Chr(34) & ", " & Chr(34) & expos(X) & Chr(34) & ")" Else statString = statString & rgs(X) & Chr(34) & ", " & Chr(34) & expos(X) & Chr(34) & "), " End If Next X statString = statString & ")" On Error GoTo 0 MsgBox (statString) ActiveWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, SourceData:= _ statString, Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:="", TableName:= _ "PivotTable1", DefaultVersion:=xlPivotTableVersion15 ActiveSheet.PivotTables("PivotTable1").DataPivotField.PivotItems( _ "Sum of Value").Position = 1 End Sub 

现在下面的代码适用于从多个表中构build一个数据透视表,但是每当数据范围发生变化时都需要对其进行调整。 我不明白为什么statString不能正常工作时,它是在代码中input相同的东西。

 Sub GrandPivot() ActiveWorkbook.PivotCaches.Create(SourceType:=xlConsolidation, SourceData:= _ Array(Array("'Orc Text'!R7C1:R16C10", "Item1"), Array("'Orc Text'!R22C1:R31C10", _ "Item2"), Array("'Orc Text'!R37C1:R46C10", "Item3"), Array( _ "'Orc Text'!R52C1:R61C10", "Item4"), Array("'Orc Text'!R67C1:R76C10", "Item5"), _ Array("'Orc Text'!R82C1:R91C10", "Item6"), Array("'Orc Text'!R97C1:R106C10", _ "Item7"), Array("'Orc Text'!R112C1:R121C10", "Item8"), Array( _ "'Orc Text'!R127C1:R136C10", "Item9"), Array("'Orc Text'!R142C1:R151C10", "Item10" _ ), Array("'Orc Text'!R157C1:R166C10", "Item11"), Array("'Orc Text'!R172C1:R181C10" _ , "Item12"), Array("'Orc Text'!R187C1:R196C10", "Item13"), Array( _ "'Orc Text'!R202C1:R211C10", "Item14")), Version:=xlPivotTableVersion15).CreatePivotTable _ TableDestination:="", TableName:= _ "PivotTable2", DefaultVersion:=xlPivotTableVersion15 ActiveSheet.PivotTables("PivotTable2").DataPivotField.PivotItems( _ "Sum of Value").Position = 1 End Sub