3

假设我在 excel 中有两列,日期为行,我想创建一个包含一些计算字段的数据透视表。计算字段的公式是Column1 / AVERAGE(Column2),具体取决于所选日期。

我用vba。但是当我这样做时

pvtTable.CalculatedFields.Add Name:="Test1", Formula:="Column1 / AVERAGE(Column2)"

AVERAGE正在从第 2 列(对于选定的日期范围)中的值总和计算,而不是单个值。 编辑AVERAGE在计算字段的公式中似乎被忽略了,取而代之的是总和。

AVERAGE在计算字段的公式中使用时有什么方法可以使用单个值?我使用 Office 2010。

更多细节

我试图这样做:

With pvtTable
    With .PivotFields("Column2")
        .Orientation = xlDataField
        .Function = xlAverage
        .NumberFormat = "0.00"
        .Value = "Avg Column2"
    End With
End With
pvtTable.CalculatedFields.Add Name:="Test2", Formula:="Column1 / Avg Column2"

但未Test2显示在数据透视表的字段列表中。当我想从 vba 显示它时,我得到一个错误Unable to get the PivotFields property of the PivotTable class

4

1 回答 1

0

你快到了。在您的第一次尝试中,您需要将公式:= 更改为实际公式。: 后面的 = 不会启动您的公式(请参阅 name 参数)。这是一个令人困惑的语法。那么你需要在列名周围加上单引号。

这应该可以解决问题:

ActiveSheet.PivotTables("PivotTable1").CalculatedFields.Add _
    "Test1", _
    "='Column 1'/AVERAGE('Column 2' )", _
    True

更新:这不起作用。您不能在需要范围引用的计算字段中使用公式。

http://www.ozgrid.com/Excel/pivot-calculated-fields.htm

于 2013-10-30T21:42:37.817 回答