生成最后一个空行的Pivot

我有两张床单。 工作表1“结果”其中有一个包含8列的表。

我有第二张表“总和”,我为Reuslt工作表生成一个数据透视表。

代码工作正常,但它会计算每列的总和并给出结果。

我想只有最后更新的行数据透视表。

最后一次更新行的每一个和每一周都会改变。 下周,更新将在17日发现,等等…

我有一个表如图所示,数据透视表在另一个表(示例显示了一个示例)中生成,与下面的代码,我得到的完整列的总和。但是我想只有最后一次更新的结果如图2的表2所示

任何人都可以build议我怎么能做到这一点? 任何领导都会有所帮助

Sub sum2017() Dim ws9 As Worksheet Dim pc9 As PivotCache Dim pt9 As PivotTable Dim ct9 As Integer Set ws9 = Sheets("Sum") Set pc9 = ActiveWorkbook.PivotCaches.Create(xlDatabase, "'Result'!R1C1:R1048576C6") Set pt9 = pc9.CreatePivotTable(ws9.Range("A3")) pt9.AddDataField pt9.PivotFields("NOK"), "Sum of NOK", xlSum pt9.AddDataField pt9.PivotFields("OK"), "Sum of OK", xlSum pt9.AddDataField pt9.PivotFields("Total"), "Sum of Total", xlSum pt9.AddDataField pt9.PivotFields("NOK %"), "Sum of NOK %", xlSum pt9.AddDataField pt9.PivotFields("OK %"), "Sum of OK %", xlSum pt9.DataLabelRange.HorizontalAlignment = xlCenter pt9.DataLabelRange.ReadingOrder = xlContext pt9.TableRange2.HorizontalAlignment = xlCenter End Sub 

这是我的源数据的样子。我想有最后一个填充行。这个星期的数字是30,所以第30行是填充。下一个星期将是31,我想数据透视表只取31的值。

这段代码可以工作,但每次创build新的数据透视表时,都会添加帮助表。 如果您不想这样做,只需添加一些额外的表单,并按照您的意愿命名,而不是将wskHelpSheet的引用更改为该表单,并记得在macros的开始处始终清理此工作表。 我希望这听起来很清楚:)

  Sub sum2017() Dim ws9 As Worksheet Dim wskResult As Worksheet Dim pc9 As PivotCache Dim pt9 As PivotTable Dim ct9 As Integer Dim rngPivotRangeHeaders As Range Dim lngLRow As Long Dim lngLCol As Long Dim rngPivotRangeRecords As Range Dim rngPTRange As Range Dim wskHelpSheet As Worksheet Set ws9 = Sheets("Sum") Set wskResult = ThisWorkbook.Sheets("Result") Set wskHelpSheet = Worksheets.Add With wskResult lngLRow = .Cells(Rows.Count, "B").End(xlUp).Row lngLCol = .Cells(1, Columns.Count).End(xlToLeft).Column Set rngPivotRangeHeaders = .Range(.Cells(1, 1), .Cells(1, lngLCol)) Set rngPivotRangeRecords = .Range(.Cells(lngLRow, 1), .Cells(lngLRow, lngLCol)) Set rngPTRange = Union(rngPivotRangeHeaders, rngPivotRangeRecords) rngPTRange.Copy End With With wskHelpSheet .Range("a1").PasteSpecial Paste:=xlPasteValues lngLRow = .Cells(Rows.Count, "B").End(xlUp).Row lngLCol = .Cells(1, Columns.Count).End(xlToLeft).Column Set rngPTRange = .Range(.Cells(1, 1), .Cells(lngLRow, lngLCol)) End With Set pc9 = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngPTRange) Set pt9 = pc9.CreatePivotTable(ws9.Range("A3")) With pt9 .AddDataField .PivotFields("NOK"), "Sum of NOK", xlSum .AddDataField .PivotFields("OK"), "Sum of OK", xlSum .AddDataField .PivotFields("Total"), "Sum of Total", xlSum .AddDataField .PivotFields("NOK %"), "Sum of NOK %", xlSum .AddDataField .PivotFields("OK %"), "Sum of OK %", xlSum .DataLabelRange.HorizontalAlignment = xlCenter .DataLabelRange.ReadingOrder = xlContext .TableRange2.HorizontalAlignment = xlCenter End With End Sub