Excel VBA通​​过数据透视表循环并执行计算

时间:2018-09-11 16:16:23

标签: excel vba excel-vba pivot-table

我有一个数据透视表,每次我将数据集刷新到办公室中的mySQL数据库时都会自动刷新。

我的Excel文件对mySQL数据库启动查询并返回一个数据表,并且我在单独的工作表上有两个数据透视表,每次完成后它们都会自动更新。我的代码如下:

Sub UpdatePivots()
    ' This sub is intended to update all pivot charts in the by switching to the appropriate
    ' worksheet, locating the appropriate pivot table, and updating them.

    Dim ws As Worksheet
    Dim PT As PivotTable

    For Each ws In ActiveWorkbook.Worksheets '<~~ Loop all worksheets in workbook
        For Each PT In ws.PivotTables        '<~~ Loop all pivot tables in worksheet
            PT.PivotCache.Refresh
        Next PT
    Next ws
End Sub

我要为数据透视表中的某些字段计算YIELD。该表当前如下所示:Example Sheet

如您所见,我自动在“ YIELD”列中添加了一个代码:

=GETPIVOTDATA("Pass / Fail",$B$5,"Job ID","Job 1","Pass / Fail","Pass")/GETPIVOTDATA("Pass / Fail",$B$5,"Job ID","Job 1")

理想情况下,我想做的是添加到我的UpdatePivots()宏中以自动计算列出的每一行的产量(通过/总计)。

此表的大小可能会发生变化-有时我在给定的月份(例如到目前为止的9月)只查看3个工作,而其他时候我的老板希望我在整个年度内运行此报告,这样我就可以超过100个工作岗位。所以我想使用一些看起来像这样的伪代码:

Cell F6.Text = YIELD
<Apply Pivot Table Formatting to Cell F6>

for each row in pivottable {

    Cell Fx.Value = Pass / Grand Total

}

有人可以帮我吗?我曾尝试过在纸上集思广益,但什至不知道从哪里开始。

PS-如何获取数据透视表以停止该可怕的格式并保持灰色单元格?我最终希望添加图表。

谢谢!

1 个答案:

答案 0 :(得分:0)

以下代码满足了我的需求:

Sub CalculateYield()

    k = Cells(Rows.Count, 2).End(xlUp).Row
    For r = 9 To k
        Cells(r, 6).Formula = "=" & Cells(r, 3).Address(False, False) & "/" & Cells(r, 5).Address(False, False)
    Next

End Sub