我的数据透视表的目标是计算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计算字段以成功计算这些值?我应该输入什么公式才能实现这一目标?
感谢。
答案 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