• ベストアンサー

Excel 2003 ピボットテーブルのフィールド

お世話になります。 掲題の件で 質問が御座います。 ピボットテーブルにおいて フィールドの集計方法と言いますか 集計にかけたい元データを入れる所(?)右下の。 ここのデータを変更した時に いつも自動で集計方法が変更されてしまいます。 本当は ずっと「合計」を表示させたいのですが 中身のデータを入れ替えると いつも 「データの個数」になってしまいます。 ウィザードで元に戻って見てみても、オプションを開いて見てみても よく分かりません。 どうしたら「常に合計を表示させる」ことが出来るのでしょうか? どなたか お分かりになるかたが いらっしゃいましたら 宜しくお願い致します。 説明不足等 御座いましたら何なりとお申し付けください。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

>ちなみに元データは計算結果なので「0」が表示され空白はない状態です。 ピボットテーブルの元データ範囲全てが数式で埋まって、「0」が表示されているのが確かなら、 自動で「合計」になると思うのですが、そうでは無い? ピボットテーブルを一度作り直したほうが良いかもしれませんね。 >もしや「Sheetピボット」ではなく「ThisWorkbook」に貼り付けるのでしょか? どのモジュールでも構わないんですが、変更したいピボットテーブルがあるSheetをアクティブにして Sub test() を実行しなければなりません。 ボタンやショートカットキーなどにマクロを割り当てれば『1アクション』になります。 もし、ピボットテーブルを更新した時に、『常に』自動変更したいなら、ピボットテーブルがあるシートのモジュールに以下。 Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)   Dim p As PivotField   Application.EnableEvents = False   On Error GoTo errHndlr   For Each p In Target.DataFields     p.Function = xlSum     p.Caption = p.SourceName & " 計"   Next errHndlr:   Application.EnableEvents = True End Sub 複数のシートに設定したいなら、 'Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable) ここを変更して、ピボットテーブルがあるシートではなくThisWorkbookモジュールに置けば良いです。

ookami1969
質問者

お礼

再回答 誠にありがとう御座います。 すみません! 前回 いただいたコードも ちきんと動作してくれました。。。 今回いただいたように常に自動で変更するものと勝手に勘違いしておりまして。。。 前回いただいたコードも実行を押したら きちんと動作してくれたのですが 今回いただいた方が 実行を押す手間すらないので こちらを利用させていただきたく思います。 たかが20Pでは御座いますが ご査収ください。 再回答 誠にありがとう御座いました!!

その他の回答 (2)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>本当は ずっと「合計」を表示させたいのですが 中身のデータを入れ替えると いつも >「データの個数」になってしまいます。 元データを入れ替えて『更新』だけならおそらく集計方法を維持しますから、 『中身のデータを入れ替えると』とは、集計するフィールドを入れ替えるという意味でしょうか。 データフィールドを新規に追加する場合、 ピボットテーブルは元データの状態によってある程度「自動で」集計方法を設定します。 集計対象の元データに文字列がある場合、集計方法が「個数」になってしまいます。 また、空白セルがある場合も同様です。 対処方法としては、元データを整理しておくか、 または集計方法を1アクションで変更できるようなマクロを使うか、 ...になるでしょう。 Sub test()   Dim pt As PivotTable   Dim p As PivotField   For Each pt In ActiveSheet.PivotTables     For Each p In pt.DataFields       p.Function = xlSum       p.Caption = p.SourceName & " 計"     Next   Next End Sub

ookami1969
質問者

お礼

ご回答誠にありがとう御座います。 また お礼が遅くなりまして申し訳御座いません。 いただきましたコードをピボットのあるシートに貼り付けたのですが ウマく反応してくれませんでした。。。。 もしや「Sheetピボット」ではなく「ThisWorkbook」に貼り付けるのでしょか? 大変 お手数では御座いますが 再度 ご教示いただけませんでしょうか。。 >『中身のデータを入れ替えると』とは、集計するフィールドを入れ替えるという意味でしょうか。 こちらは お察しの通り そういう意味で御座います。 ちなみに元データは計算結果なので「0」が表示され空白はない状態です。 宜しくお願い致します。

  • tag1701
  • ベストアンサー率54% (67/123)
回答No.1

通常セルに数字を直接打ち込むと、数値形式のデータとして 認識され、ピボットでは普通に合計として出てきますが、 私の場合、あるデータベースからエクセルへエクスポートし、 ピボットにすると同じ現象が出ますが、この場合、データ形式が 文字として吐き出されてしまう為、毎回個数になります。 データ入れ替え作業がどのようになされているか分かりませんが、 処置後にセルの書式を確認してみてください。 もし文字列等になっている場合、数値として入れ替えになる様 データ入れ替え作業の方法を考慮してみてください。

ookami1969
質問者

お礼

ご回答 ありがとう御座います。 この質問をした後で「もしや」と思い 元データの範囲を表示形式「標準」から「数値」に変更してみましたが ダメでした。。。 ちなみに 僕の場合は 数式の計算結果を元データとしているのですが やはり毎回個数から合計に変更するほかないのでしょうか。。 ありがとう御座いました。

関連するQ&A

専門家に質問してみよう