• ベストアンサー

EXCELのピボットテーブルで、ある列をキーとして隣の何列かを色づけしたい

EXCELで、ピボットテーブルの最後の列を使い、>=1、<1、<0.66、<0.33、<0の5条件で場合分けをし、そのピボットテーブル内のほかの列を色づけしたいのです。 ピボットテーブルはB13:J19あたりにあり、行数は可変します。 キーとなる行はJ列です。(J13以降です) マクロを組むしかないと思いますが、どうすればいいでしょうか?

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

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

>そのピボットテーブル内のほかの列を色づけしたいのです。 これはデータフィールド内のほかの列という解釈で良い? Option Explicit Sub test()   Dim target As Range   Dim rng  As Range   Dim x   As Long   Dim i   As Long   'ActiveSheetの1つ目のPivotTableのデータフィールドを取得   Set rng = ActiveSheet.PivotTables(1).DataBodyRange   x = rng.Columns.Count   'データフィールドが複数列の時だけ処理   If x > 1 Then     Application.ScreenUpdating = False     '色づけ対象範囲をセット     Set target = rng.Resize(, x - 1)     target.Interior.ColorIndex = xlNone     'データエリアの行数分Loop     With rng.Columns(x).Cells       For i = 1 To .Count         If IsNumeric(.Item(i).Value) Then           Select Case .Item(i).Value           Case Is < 0             target.Rows(i).Interior.ColorIndex = 34           Case Is < 0.33             target.Rows(i).Interior.ColorIndex = 35           Case Is < 0.66             target.Rows(i).Interior.ColorIndex = 36           Case Is < 1             target.Rows(i).Interior.ColorIndex = 37           Case Else             target.Rows(i).Interior.ColorIndex = 38           End Select         End If       Next     End With     Application.ScreenUpdating = True   End If   Set rng = Nothing   Set target = Nothing End Sub もしピボットテーブル全体だったら...DataBodyRange を...TableRange1 に変更必要です。

memento1
質問者

お礼

ピボットテーブル全体でしたので、TableRange1で出来ました! ありがとうございます。コードの中身を見て、勉強させて頂きます。 後学の為、教えていただけると有難いのですが、どの行でキー列を指定しているのでしょうか?

その他の回答 (1)

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

Sub test2() 'PivotTableが在るSheetをアクティブに。   Dim rng As Range   Dim x  As Long   Set rng = ActiveSheet.PivotTables(1).TableRange1   rng.Select   x = rng.Columns.Count   MsgBox "TableRange1の列数 x = " & x   rng.Columns(x).Select      Set rng = Nothing End Sub http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_030.html http://www.sanynet.ne.jp/~awa/excelvba/kouza/chapt_03/018.html