创建数据透视表的Excel VBA

创建数据透视表的Excel VBA,vba,excel,Vba,Excel,我有一个宏,它获取所有sheet1并创建一个数据透视表。然而,它目前只查看我制作时的行数,而不是整个工作表,无论当天有多少行。有没有办法让它每次都选择sheet1中的所有数据作为透视表数据 如果可能的话,我还希望根据列名(IDNUMBER)将修复重复项更改为整个列(如果可能的话) 范围($A$1:$AM$2428) 范围($A$1:$AM$4000) “数据透视状态报告!R1C1:R1048576C39” 提前谢谢 我将使用此函数中提供的最后一行和最后一列公式。 然后使源成为这些变量的组合 Fu

我有一个宏,它获取所有sheet1并创建一个数据透视表。然而,它目前只查看我制作时的行数,而不是整个工作表,无论当天有多少行。有没有办法让它每次都选择sheet1中的所有数据作为透视表数据

如果可能的话,我还希望根据列名(IDNUMBER)将修复重复项更改为整个列(如果可能的话)

范围($A$1:$AM$2428) 范围($A$1:$AM$4000) “数据透视状态报告!R1C1:R1048576C39”


提前谢谢

我将使用此函数中提供的最后一行和最后一列公式。 然后使源成为这些变量的组合

Function LastRowColumn(sht As Worksheet, RowColumn As String) As Long
'PURPOSE: Function To Return the Last Row Or Column Number In the Active 
Spreadsheet
'INPUT: "R" or "C" to determine which direction to search

Dim rc As Long

Select Case LCase(Left(RowColumn, 1)) 'If they put in 'row' or column instead of 'r' or 'c'.
  Case "c"
LastRowColumn = sht.Cells.Find("*", LookIn:=xlFormulas, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
 Case "r"
   LastRowColumn = sht.Cells.Find("*", LookIn:=xlFormulas, SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious).Row
 Case Else
  LastRowColumn = 1
End Select

 End Function
然后在宏的内部调出:

 x = LastRowColumn(ActiveSheet, "column")
 y = LastRowColumn(ActiveSheet, "Row")
 plast = cells(x,y)
然后根据透视表的源创建一个范围

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"PIVOT_STATE_REPORT!A1:" & plast, Version:=xlPivotTableVersion15). _
    CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable1" _
    , DefaultVersion:=xlPivotTableVersion15

我认为最简单的方法是替换这些代码行

Columns("AJ:AJ").Select
ActiveSheet.Range("$A$1:$AM$4000").RemoveDuplicates Columns:=36, Header:=xlYes
Range("A2").Select

此更新可能是您制作数据透视缓存的地方

`
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "PIVOT_STATE_REPORT!R1C1:R1048576C39", Version:=xlPivotTableVersion15). _
            CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable1" _
            , DefaultVersion:=xlPivotTableVersion15c
`
下面的代码使用rData范围作为源数据

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    rData, Version:=xlPivotTableVersion15). _
    CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable1" _
    , DefaultVersion:=xlPivotTableVersion15

注意这假设数据的列或行中没有间隙。结束(xlDown)相当于按住Ctrl和Down键

Hello,我得到一个错误(类型不匹配),它突出显示了查询中的下一行。ActiveWorkbook.PivotCaches.Create SourceType:=xlDatabase,SourceData:=RData您能显示最新的代码吗?我测试它时,它工作正常吗?
`
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "PIVOT_STATE_REPORT!R1C1:R1048576C39", Version:=xlPivotTableVersion15). _
            CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable1" _
            , DefaultVersion:=xlPivotTableVersion15c
`
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    rData, Version:=xlPivotTableVersion15). _
    CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable1" _
    , DefaultVersion:=xlPivotTableVersion15