Excel 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手动创build这个表。

 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 " 

“正常运行时间”字段是每个停靠点input的正常运行时间的总和,“停止”字段是每天input的停靠点的计数。 我的问题是,如何设置MTBF计算字段以成功计算这些值? 为了达到这个目的,我应该input什么样的公式?

谢谢。

当你做一个计算领域时,我不知道除了总和以外还有什么办法可以做。 好消息是,在你的例子中,通过在源数据中添加另一列,可以轻松解决这个问题 – 将其称为“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