Excel VBA:如何使用数据透视表计算字段利用"计数..."字段

时间:2016-11-02 16:29:39

标签: excel excel-vba pivot-table vba

我的数据透视表的目标是计算MTBF(平均故障间隔时间)。这是一个非常简单的计算用于制造以评估机器性能:

MTBF = machine_uptime / number_of_stops

例如:如果一台机器运行840分钟,10次停机或故障,则MTBF为84分钟。

这是我理想的数据透视表布局:

| Date  |Sum of Uptime|Count of Stops|    MTBF    |
|-------|-------------|--------------|------------|
| 08/01 |   1101.4    |      6       |    184     |
| 08/02 |   1068.0    |      7       |    153     |

这是我以编程方式生成数据透视表的方法。但是,我的问题仍然存在,即使我是通过GUI手动创建此表。

Dim pTable as PivotTable
Set pTable_MTBF = Utilities.CreatePivotTable(ws, "pTable_MTBF", "data", ws.Cells(1, 1))
pTable_MTBF.PivotFields("Date").orientation = xlRowField
pTable_MTBF.AddDataField pTable_MTBF.PivotFields("Uptime"), "Sum of Uptime", xlSum
pTable_MTBF.AddDataField pTable_MTBF.PivotFields("Stops"), "Count of Stops", xlCount
' pTable_MTBF.CalculatedFields.Add "MTBF", "=Uptime/'Count of Faults' (something like this?)
' pTable_MTBF.AddDataField pTable_MTBF.PivotFields("MTBF"), "MTBF "

'正常运行时间'字段是每个站点输入的正常运行时间的总和,并且“停止”'字段是每天输入的停靠点的计数。我的问题是,如何设置MTBF计算字段以成功计算这些值?我应该输入什么公式才能实现这一目标?

感谢。

1 个答案:

答案 0 :(得分:1)

当你进行计算字段时,我不知道除了总和之外还有什么方法可以做任何事情。好消息是,在您的示例中,可以通过向源数据添加另一列来轻松克服 - 将其称为“StopCount”并将其填入所有1。如果您的数据位于表格中,则可以使用公式=1,它会自动调整为数据大小。

一旦完成,标准计算字段应该起作用:

pTable_MTBF.PivotFields("Date").Orientation = xlRowField
pTable_MTBF.AddDataField pTable_MTBF.PivotFields("Uptime"), "Sum of Uptime", xlSum
pTable_MTBF.AddDataField pTable_MTBF.PivotFields("Stops"), "Count of Stops", xlCount
pTable_MTBF.CalculatedFields.Add "MTBF", "=Uptime/StopCount", True
pTable_MTBF.PivotFields("MTBF").Orientation = xlDataField