• ベストアンサー

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

関連するQ&A

  • 未だにピボットテーブルがよくわからない・・・

    Excelはもう10年以上も仕事で使ってきて、VBAでマクロを組んで業務を効率化するという仕事もしてきましたが、未だにピボットテーブルだけは理解できません。 ピボットテーブルの使い方を解説したサイトを読んだりもしましたが、どういうことができるのかはだいたい理解できるものの、ピボットテーブルを挿入したあとどうすれば自分の思う集計ができるのかがわからない。 右側にある「ピボットテーブルのフィールド」で、どういうときに「フィールド」「列」「行」「値」それぞれのところへどんな順番で移動すれば良いのかわからない。 同じフィールド内でも順番が入れ替わるだけでピボットテーブルの見栄えがガラッと変わりますよね。 ピボットテーブルを使えば5分で終わるような集計を、僕は1時間とかかけてVBAを使って力技で集計してるのがバカバカしくて悲しくなります。 「VBA使えるなんてすごい!」なんてよく言ってもらえますが、ExcelでできることをわざわざVBAを書いてやるなんて、まるで車輪の再発明じゃないですか。 ピボットテーブルを使いたいというか、理解したいです。 何か良いサイトか本を教えていただけないでしょうか? 特にフィールドのところを詳しく説明してるような・・・。 よろしくお願いいたします。

  • エクセル2000のピボットテーブルで 「行」にあるデータを「列」へ移動

    エクセル2000のピボットテーブルで 「行」にあるデータを「列」へ移動する方法がありましたら、ご教授頂けるとありがたいです。 上のバージョンでは、「ピボットテーブル」→「順序」→「列に移動」というのがあったかと思いますが、2000ではこの機能が見当たりません。 よろしくお願いいたします。

  • Access2000でピボットテーブル

    Access2000でピボットテーブルフォームというのがあります。 Accessのテーブルからピボットテーブルがつくれるのですが、この場合に Accessのテーブルのデータ数が65536行を超えるデータ(エクセルの最大の行数) でもピボットテーブルは作成できるのでしょうか? ご存知の方教えてください

  • エクセル2010使い方-ピボットテーブル-

    エクセル2010で作成した、ピボットテーブルの 同一項目を選択するにはどうすればよいでしょうか。 以前は項目の始まりにマウスを合わせると、矢印にかわり、 一括して同一項目を選択できたのですが。 行の小計を選択するのをマクロに書くと、こんな感じなのですが。 Sub 小計を選択() ActiveSheet.PivotTables("ピボットテーブル").PivotSelect "行ラベル[All;Total]", _ xlDataAndLabel, True End Sub よろしくお願いいたします。

  • ピボットテーブルで文字列…

    エクセル2000をつかっています。 ピボットテーブルのことなんですが、 データに文字列を表示したいのです。 ムリでしょうか?? ピボットテーブル以外でもよい方法があれば教えてください.

  • Excel VBA ピボットテーブル作成

    <元データ>Sheet1 A列 B列 C列 D列 E列 F列 商品名 種類 担当者 売上日 備考 本数 りんご 国産 新人 2010/4/1 売れ筋 5 なし 外国産 ベテラン 2010/4/5 通常 6 いちご 国産 新人 2010/3/23 通常 2 元データをもとにピボットテーブルを作成。添付図をご確認ください。 ピボットテーブルの下記条件を別シートにコピーしたいと考えています。※ピボットテーブルのシートはSheet2です。 C列の担当者で新人を選択、F列の本数で3本以上を抽出して Sheet3に貼り付けるマクロを考えています。 また、元データの行や列の増減に対応できるようにしたいです。 元データからピボットテーブルを作成して、希望条件のみを抽出して 別シートにコピーするマクロのサンプルをお教え頂けますでしょうか。

  • Excel 2002 のピボットテーブル

    こんにちわ エクセル2002のピボットテーブルの値を 別のSheetなりにリンク貼り付けをしたいときに ”=”によって引っ張ってくることはできないのでしょうか。 複数のSheetの複数の繋がった列&行にリンク貼り付けを同時に行いたいのです。 エクセル2000では”=Sheet名!セル値番”でリンクできたのですが・・・。 ”GETPIVOTDATA”関数が自動的についてしまい 複数列、複数行の貼り付けができません。 どうにかこの”GETPIVOTDATA”をはずすことはできないでしょうか。 どなたか教えてください!

  • ピボットテーブルは重なり合うことはできませんエラー

    ピボットテーブルを更新すると 『ピボットテーブル レポートは ほかのピボットテーブル レポートと 重なり合うことはできません』エラーが出ます。 集計結果が15行×20列ほどのピボットテーブルで 下方向、右方向に他のピボットテーブルはありません。 思い当たるのは集計前データ件数(5万件超)ですが、何か関係するでしょうか。 ExcelはOffice365(バージョン1902)です。

  • エクセルのピボットテーブルで

    ピボットテーブルの表示方法についてです。 表の品名と数量からピボットテーブルを作成します。 行に品名、データ部に数量を表示させるのですが、数量が0(ゼロ)の場合には、その行自体を表示させない様にしたいのです。 元の表の方は変更等出来ないので、ピボットテーブルの方で何とか出来ないかと思います。 【元の表】 品番  数量 A001  5,000 A002    0 B001  4,500 B002    0 上記の2列からピボットテーブルを作成すます。 【ピボットテーブル】 品番  数量 A001  5,000 B001  4,500 総計  9,500 上記の様に、元の表で数量が0なら、その品番と数量の行が表示されない様にです。

  • エクセル ピボットテーブルで同一列内の同じ文字を抽出

    マクロを使い、ピボットテーブル上でA列の任意の文字をクリックすると、 A列を検索して同じ文字があれば抽出した行を反転?(青くなる奴です)したいです。   A    B    C  ・・・ 1 大阪  50 2 静岡  15 3 東京  33 4 大阪  14 5 大阪  05 6 東京  88 この場合、セルA5の"大阪"をクリックするとA列の1行目と4,5行目の"大阪"の文字をキーワードに、1・4・5行を反転させたいのですが可能でしょうか? 当方エクセル、VBAともに初心者です。よろしくお願いします。 補足 A6セルをクリック(A6セルの上にカーソルがある状態)すれば3・6行を反転という事です。

専門家に質問してみよう