web-dev-qa-db-ja.com

ピボットテーブル(計算フィールド)での平均の操作

次のデータがあります。

_customer_id customer_name   id          date        contract_value  costs   profit_extra_work
200027      Company A       00.161.559  08/07/2015   499.5          50.55   0
200027      Company A       00.161.566  08/07/2015   499.5          30      824.9
200027      Company A       00.188.852  04/04/2016   499.5          0       69.39
200027      Company A       00.190.078  30/05/2016   499.5          98.1    158.29
200027      Company A       00.190.291  14/04/2016   499.5          15      346.06
200027      Company A       00.222.221  12/05/2017   499.5          15      5.1
200027      Company A       00.222.229  12/05/2017   499.5          100.35  400.81
200027      Company A       00.161.561  08/07/2015   499.5          45      269.97
200027      Company A       00.185.058  18/02/2016   499.5          15      77.41
200027      Company A       00.190.074  30/05/2016   499.5          37.5    95.92
200027      Company A       00.190.084  30/05/2016   499.5          45      420.89
200027      Company A       00.194.050  01/06/2016   499.5          139.65  0
200027      Company A       00.222.222  12/05/2017   499.5          60      274.88
_

これは私のピボットテーブルは次のようになります。

_Row Labels  Average of contract_value   Sum of costs    Sum of profit_extra_work
Company A   499.5                       651.15          2943.62 
_

私がやりたいのは、「契約利益」という計算フィールドを追加することです。この値は_Average of contract_value - Sum of costs_として計算できます。そこで、次の式で新しい計算フィールド「契約利益」を追加してみました。

_= contract_value - costs
_

しかし、これは間違った結果を返します(5842.35)。その理由は、_contract_value_の場合、平均ではなく合計を取るためです。 AVERAGE(contract_value) - costsを使用してみましたが、これは同じ不正な結果を返します。

計算フィールドの契約値の平均値を使用して、正しい値-151.56を取得するにはどうすればよいですか?

6
narzero

Microsoftのやや不透明なヘルプページには、「カスタム数式は個々のレコードではなく合計で機能する」と記載されています。 ( "ピボットテーブルレポートの値を計算する" これは、質問に対して2つの意味があります。(1)契約の値への数式の参照は、sum契約値の場合、フィールドは平均として表示されますが、(2)「AVERAGE」や「COUNT」などの関数は、単一の値(合計)で動作しているため、ほとんど何もしません。

独自の平均を計算するには、すべてのエントリに「1」を持つ新しい変数をデータテーブルに作成する必要があります。これを「ヘルパー」と呼びましょう。カスタム数式の「ヘルパー」は、行数のカウントになります。 (例では13)。

だからあなたが探している式は

=(contract_value /helper )-costs

(これは行ごとに個別に計算されるため、たとえば「B社」を追加すると、各企業の「正しい」結果が得られます。)

4
Jonathan