0

ピボットテーブルを含むExcelスプレッドシートがあります。データ自体は非常に単純で、ユニット数と割引(0から100までのパーセンテージ)で、日付を上に、顧客を左側にピボットします。これらの数値はSQLビューから直接取得されるため、ピボットテーブルのソースは次のようになります。

SELECT * FROM UnitDiscountView

TotalCostの計算フィールド(各ユニットのコストは200ポンド)をピボットテーブルに追加しようとするまで、すべてが順調に見えていました。

= (200 *NrUnits ) * ((100-Discount)/100)

一番下の合計はマイナスで、予想をはるかに超えていました。すべてのセルを選択すると、下部のステータスバーに表示される合計は予想どおりですが、下部の[合計]フィールドは100倍以上大きく、起動するにはマイナスになります。

私は困惑しています。私は金曜日以来、これを解決するのに役立つものを見つけることなく検索しました。解決策を探し始める場所についてのポインタをいただければ幸いです。SQLは私の得意分野であり、Excelではありません。私は先週までExcelのピボットテーブルを使用したことがないので、おそらく本当に明白なものが欠けています。

4

2 に答える 2

1

計算フィールドは合計で機能します。

200 * (NrUnits の合計) * ((100 - [割引の合計]) / 100 )

したがって、合計行で、割引の合計が 100 より大きい場合 (ピボット テーブルのすべての割引の合計を合計すると)、式の一部 (100-割引の合計) は負の数を返すため、負の価値。

私が通常行うことは、クエリから返された値の右側にあるテーブルに別の列を追加することです。そこに数式を追加し、サイズ変更したテーブルでピボット テーブルを作成します。

返された SQL クエリをテーブル (または Excel 2003 のリスト) としてフォーマットした場合は、ピボット テーブルのソース範囲もそれ自体でサイズ変更する必要があります。

于 2009-11-16T09:56:06.757 に答える
0

私は答えを見つけました。

Excelは合計でこれを効果的に行っていました:

= (200 * sum(NrUnits)) * ((100-sum(Discount))/100)

これは私が望んでいたものにも近くありません:

= sum((200-NrUnits) * ((100-Discount) * 100)))

SQLをビューから次のように変更することで、それを回避しました。

SELECT *, NrUnits*((100-Discount)*100) AS EffectiveUnits
FROM UnitDiscountView

計算済みフィールドは次のようになります。

= EffectiveUnits * 200
于 2009-11-16T09:57:56.850 に答える