ピボットテーブルの行の列(RowRangeプロパティ)

今日は、職場で受けた相談をアレンジして紹介。
f:id:Infoment:20200428223057j:plain

いつもの「なんちゃって個人情報」で、A列を「グループNo.」に変更した。
f:id:Infoment:20200428223154p:plain

今回は無作為に、1~5でグループ分け。
このテーブルを用いて、ピボットテーブルを作成。
f:id:Infoment:20200428223358p:plain

このたび受けた相談は、マクロでグループ番号を3桁に出来ないか?というもの。
具体的には、こんな感じだ。
f:id:Infoment:20200428223535p:plain

そこで今回は、表示形式の設定で対応することにした。
早速、マクロの記録で概要を確認。すると、こんなコードが記録された。

Sub Macro1()
    ActiveSheet.PivotTables("ピボットテーブル1").PivotSelect "グループNo[All]", xlLabelOnly + _
        xlFirstRow, True
    Selection.NumberFormatLocal = "000"
End Sub

列を指定するだけなのに、何やら色々と情報が多くて分かり難い。
そこで色々と探してみたところ、良さげなものがあったので使ってみた。

Sub Macro1()
    Dim Pvt As PivotTable
    Set Pvt = ActiveSheet.PivotTables(1)
        Pvt.RowRange.NumberFormatLocal = "000"
End Sub

この「RowRange」を用いることで、希望する書式変更を実現できた。良かった。
docs.microsoft.com


ただし確認のため、↓ のように「年齢」を行に加えて実行してみたところ、年齢も三桁になってしまった。
f:id:Infoment:20200428224606p:plain

このことから、以下二つの条件を同時に満たす場合は有効なようだ。

  1. 数字だけのラベルが無い(RowRangeはラベルも含まれるため)。
  2. 行の全てが同じ書式になって構わない。

というわけで、「RowRange」で指定するか否かは、時と場合と各位の好みで。

参考まで。