如何创建引用excel数据透视表中的单元格值的计算字段

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

我的数据如下所示:

Col1 | Value
A    | 1
B    | 1
A    | 3
C    | 7

和一个数据透视表,它总结了col1的值。另外,我在另一个单元格(另一个工作表)中有一个交换rete,我想在我的数据透视表中创建一个计算字段,该字段将该单元格中的汇率值乘以。这可能吗?怎么样?这样做的原因是用户可能会更改单元格中的汇率,但他们不知道如何在计算字段中更改它。我知道我可以在源数据中添加一个具有计算值的列,但如果可能的话,我想将其作为计算的数据透视表字段。

excel pivot-table calculated-field
2个回答
3
投票

通过使用一点VBA将一个Table“slaving”到数据透视表,你可以实现与你所追求的类似的东西。 See this answer I posted, that can be adapted to effectively achieve what you want.

或者,您可以将源数据中的各个总计乘以名为Exchange_Rate的命名范围,并且只要用户更改了Exchange_Rate输入参数,就会有一小部分VBA刷新数据透视表。

这是看起来如何:

First Exchange Rate

...如果我更改橙色输入单元格中的ExchangeRate变量:

enter image description here

为此,我在相关的Sheet Module中有一小段VBA,它只是监视输入单元格是否有任何变化,然后刷新数据透视表,以便Pivot反映底层源数据中的更新值:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("ExchangeRate")) Is Nothing Then ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
End Sub

或者您可以在设置特定汇率的计算字段时记录宏,然后修改该代码以便更换费率部分以匹配对该橙色单元格的任何更改:Calc Field

...这是执行此操作的事件处理程序代码:

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

或者如果你有能力使用PowerPivot,你可以使用Rob Collie's Disconnected Slicer trick


-1
投票

我已经找到了一个更符合原始问题的答案,即使您在源数据中需要一些额外的字段。我只是添加了一个带有所需参数的字段作为常量(例如,“Exchange = $ F $ 4”),另一个字段称为“counter”,始终= 1。在计算字段中,不是将值直接乘以汇率,而是将其乘以(交换/计数器)。这样我可以得到我的计算字段,用户可以随意更改变量,性能影响为空,我不需要任何VBA。

顺便说一句,我认为你的原始问题没问题,你确实只在计算字段中指明了它。

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