我有一个数据透视表,每次我将数据集刷新到办公室中的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。该表当前如下所示:
如您所见,我自动在“ 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-如何获取数据透视表以停止该可怕的格式并保持灰色单元格?我最终希望添加图表。
谢谢!
答案 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