- ベストアンサー
EXCELのピボットテーブルで、ある列をキーとして隣の何列かを色づけしたい
EXCELで、ピボットテーブルの最後の列を使い、>=1、<1、<0.66、<0.33、<0の5条件で場合分けをし、そのピボットテーブル内のほかの列を色づけしたいのです。 ピボットテーブルはB13:J19あたりにあり、行数は可変します。 キーとなる行はJ列です。(J13以降です) マクロを組むしかないと思いますが、どうすればいいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>そのピボットテーブル内のほかの列を色づけしたいのです。 これはデータフィールド内のほかの列という解釈で良い? 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 に変更必要です。
その他の回答 (1)
- end-u
- ベストアンサー率79% (496/625)
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
お礼
ピボットテーブル全体でしたので、TableRange1で出来ました! ありがとうございます。コードの中身を見て、勉強させて頂きます。 後学の為、教えていただけると有難いのですが、どの行でキー列を指定しているのでしょうか?