如何在Excel的数据透视表上对计算字段的结果求和

问题描述 投票:0回答:1

我正在处理一个数据透视表,其中包含一些我想要汇总的数据。我的数据透视表当前有 1 个用于行的文本字段和 2 个用于值的数字字段。字段“字段 1”具有来自数据源的原始数值,其中包含小数。我希望所有这些值都向上舍入为整数,因此我使用以下公式为数据透视表创建了一个计算字段:

=ROUNDUP([Field 1], 0)
。计算字段名为“Field 2”。该公式有效地将所有值四舍五入。然而,总和并没有达到我的预期。

我附上屏幕截图以更好地展示这一点:

Example pivot table

我想要做的是将所有原始值四舍五入,然后将所有这些新值相加。在示例中,结果应在总计行 (1+1) 中返回 2。然而,Excel 所做的是首先将所有值相加,得到的结果为 0.83,然后将该结果四舍五入为 1。

我将不胜感激任何解决此问题的建议,无论是通过我缺少的某些数据透视表选项还是使用 VBA 代码。不可能只对源表中的值进行舍入,因为它们用于其他计算,如果数据透视表数据被过滤,这些计算就会混乱。

我已经尝试修改计算字段的字段选项,尝试显示最大值、最小值、总和和其他选项。我还尝试对不同单元格中的数据透视表的所有

DataBodyRange
进行求和以获得结果,但我无法获得动态引用。我可以做类似
=SUM("A1:A2")
的事情,它是静态的,不会自动对新数据求和。

excel vba pivot-table custom-fields
1个回答
0
投票

我认为您无法更改在数据透视表总行上计算 Roundup 的方式。但你可以用VBA求和。

Option Explicit

Function GetTotal()
    Dim fld As PivotField
    Const HEADERNAME = "Sum of Field2"
    Application.Volatile
    Set fld = ActiveSheet.PivotTables(1).DataFields(HEADERNAME)
    GetTotal = Application.WorksheetFunction.Sum(fld.DataRange)
End Function

© www.soinside.com 2019 - 2024. All rights reserved.