我正在使用Excel2016,并从SharePoint列表中提取数据。一旦数据被拉入,我在数据列表的开头插入了3行,并插入了一些数据。然后,我启动Sub来更新数据透视表,以获取新数据并扩展表的旧范围,使其获取所有数据。它提取所有数据,但范围超出了表本身。它最终选择了两个额外的行,这些行不是数据列表的一部分。在下图中可以看到,它应该只拾取到第11行,但它拾取到第13行。这会添加两行空白数据,使透视表看起来不那么美观。提取范围信息的代码显示在星号之间。
Sub UpdateTable()
Dim Data_Sheet As Worksheet
Dim Pivot_Sheet As Worksheet
Dim StartPoint As Range
Dim DataRange As Range
Dim PivotName As String
Dim PivotTables(3) As String
Dim Table As Integer
Dim NewRange As String
Dim LastCol As Long
Dim lastRow As Long
'MsgBox Prompt:="Running UpdateTable"
'Set Pivot Table & Source Worksheet
Set Data_Sheet = ThisWorkbook.Worksheets("owssvr")
Set Pivot_Sheet = ThisWorkbook.Worksheets("Summary")
PivotTables(0) = "pvtOverOpen"
PivotTables(1) = "pvtOverAgeBracket"
PivotTables(2) = "pvtOverCreate"
PivotTables(3) = "pvtOverClosed"
'Loop through each pivot table and update it
For Table = 0 To 3 Step 1
'Enter in Pivot Table Name
PivotName = PivotTables(Table)
'Defining Staring Point & Dynamic Range
Data_Sheet.Activate
'**********************************************************************************
Set StartPoint = Data_Sheet.Range("A1")
Set DataRange = Data_Sheet.Range(StartPoint, StartPoint.SpecialCells(xlLastCell))
NewRange = Data_Sheet.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1)
'Change Pivot Table Data Source Range Address
Pivot_Sheet.PivotTables(PivotName). _
ChangePivotCache ActiveWorkbook. _
PivotCaches.Create(SourceType:=xlDatabase, SourceData:=NewRange)
'***********************************************************************************
MsgBox Prompt:=NewRange
'Ensure Pivot Table is Refreshed
Pivot_Sheet.PivotTables(PivotName).RefreshTable
'End of For Loop
Next Table
End Sub发布于 2021-07-01 00:43:25
我真的找到了解决办法。这是我使用的一种老方法,我决定用它来工作。这是我使用的代码片段,它获取了准确的数据范围:
Set StartPoint = Data_Sheet.Range("A1")
LastCol = StartPoint.End(xlToRight).Column
DownCell = StartPoint.End(xlDown).Row
Set DataRange = Data_Sheet.Range(StartPoint, Cells(DownCell, LastCol))
NewRange = Data_Sheet.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1)发布于 2021-06-25 20:23:22
你使用的范围是多少?查看下面的链接,了解有关实际使用范围的更多信息。
https://contexturesblog.com/archives/2012/03/01/select-actual-used-range-in-excel-sheet/
删除任何不在预期使用范围内的行/列,保存工作簿,然后创建数据透视表。
https://stackoverflow.com/questions/68119852
复制相似问题