2017-03-29 7 views
0

でセルの値を参照する計算フィールドを作成するために、どのように私は私の次のようなデータを持っている:Excelのピボットテーブル

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

とCOL1の値を合計し、ピボットテーブルを。 さらに、私は別のセル(別のワークシートにある)に交換券を持っており、そのセルの為替レートの値を乗算するピボットテーブルに計算フィールドを作成したいと思います。 これは可能ですか?どうやって? これは、ユーザーがセルの為替レートを変更する可能性がありますが、計算されたフィールドで変更する方法がわからないためです。 私は単純に計算された値で私のソースデータに列を追加することができますが、これが可能なすべての場合、計算されたピボットテーブルフィールドとしてしたいと思います。

答えて

1

小さなVBAを使用して、テーブルをピボットテーブルに「スレーブ」することで、これと似たようなことを実現できます。 See this answer I posted, that can be adapted to effectively achieve what you want.

また、Exchange_Rateという名前の範囲でソースデータ内の個々の合計を掛けることができ、そのExchange_Rate入力パラメータがユーザーによって変更されるたびにPivotを更新する小さなVBAを持つことができます。

は、ここでそれがどのように見えるかです:

First Exchange Rate

を...と私はそのオレンジの入力セルに一方ExchangeRate変数を変更した場合:

enter image description here

これを行うには、私が持っています関連するシートモジュールの小さなスニペットを使用して、入力セルの変更を監視し、Pivo​​tが元のソースデータの更新された値を反映できるようにPivotTableをリフレッシュします。 Calc Field

:速度の部分は、そのオレンジ色のセルに変更を一致させるために置き換えられますように

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

または特定の為替レートで計算フィールドを設定しているときにマクロを記録でき、そのコードを変更

...と、ここでこれを行い、イベントハンドラのコードです:

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を使用することができますが。

+0

ありがとう、確かに私は既に交換レートを含むセルの変更イベントのコードでVBAアプローチを使用しましたが、私は自分のコードを追加しようとしていましたが、あなたのコードがあります... しかし、これはすべて可能です(vba ...) 努力のためにとにかくありがとう!私は上向きですが、上記の理由で答えとして設定していません。 – rodedo

+0

あなたの質問は、可能であるかどうかを尋ねるだけです。あなたはVBAを使いたくないということは言及していません。あなたはあなたの質問をするときにこれらのことを明確にする必要があるので、私のような人々は、あなたが使用しない方法を追求するために時間を無駄にしないようになります。 – jeffreyweir

関連する問題