首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为最后更新的行生成数据轴

为最后更新的行生成数据轴
EN

Stack Overflow用户
提问于 2017-07-24 15:46:12
回答 1查看 33关注 0票数 0

我有两张床单。Sheet1的“结果”,它有一个包含8列的表。

我有第二个表"Sum“,其中我正在为Reuslt表生成一个数据透视表。

代码运行良好,但它计算每一列的和并给出结果。

我希望只为上一次更新的行提供枢轴表。

最后一次更新行每周更改一次。下周,更新将出现在十七号……

有人能建议我怎么做吗?任何线索都会有帮助

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-24 15:53:48

此代码可以工作,但每次创建新的枢轴时都会添加帮助表。如果您不想这样做,只需添加一些额外的工作表,按您的意愿命名它,而不是将wskHelpSheet的引用更改为该工作表,并记住始终在宏开始时清理此工作表。我希望你听起来很清楚:)

代码语言:javascript
复制
    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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45284881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档