rod*_*edo 3 excel pivot-table calculated-field
我的数据如下所示:
Col1 | Value
A | 1
B | 1
A | 3
C | 7
Run Code Online (Sandbox Code Playgroud)
以及汇总 col1 值的数据透视表。此外,我在另一个单元格(在另一个工作表中)中有一个汇率表,我想在我的数据透视表中创建一个计算字段,该字段乘以该单元格中的汇率值。这可能吗?如何?原因是用户可能会在单元格中更改汇率,但他们不知道如何在计算字段中更改它。我知道我可以简单地在源数据中添加一个包含计算值的列,但如果可能的话,我想将其作为计算数据透视表字段。
通过使用一点 VBA 将表“从属于”数据透视表,您可以实现与您所追求的类似的效果。请参阅我发布的这个答案,可以对其进行调整以有效地实现您想要的目标。
或者,您可以将源数据中的各个总计乘以名为 Exchange_Rate 的命名范围,并使用一小部分 VBA 来在用户更改 Exchange_Rate 输入参数时刷新数据透视表。
看起来是这样的:
...如果我更改橙色输入单元格中的 ExchangeRate 变量:
为此,我在相关工作表模块中有一小段 VBA,它只是监视输入单元格是否有任何更改,然后刷新数据透视表,以便数据透视表反映基础源数据中的更新值:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("ExchangeRate")) Is Nothing Then ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
End Sub
Run Code Online (Sandbox Code Playgroud)
或者,您可以在以特定汇率设置计算字段时记录宏,然后修改该代码,以便替换汇率部分以匹配对该橙色单元格的任何更改:

...这是执行此操作的事件处理程序代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("ExchangeRate")) Is Nothing Then _
ActiveSheet.PivotTables("PivotTable1").CalculatedFields("Local Cost"). _
StandardFormula = "='Value ($USD)'/ " & Range("ExchangeRate")
End Sub
Run Code Online (Sandbox Code Playgroud)
或者,如果您有能力使用 PowerPivot,则可以使用Rob Collie 的 Disconnected Slicer 技巧。