【エクセルVBA】 ピボットテーブルに行、列、値フィールドを追加する

★気に入ったらシェアをお願いします!

エクセルVBA,ピボットテーブル,pivottable,addfields,addfield

こんにちは!ノグチです。

前回の記事では、エクセルVBAでピボットキャッシュからピボットテーブルを作成する方法をご紹介しました。

エクセルVBAでピボットテーブルを作成! CreatePivotTableメソッド
エクセルVBAでPivotCacheオブジェクトのCreatePivoTableメソッドを使った、ピボットテーブル自動作成についてご紹介しています。 前回ご紹介した、PIvotCacheと組み合わせれば、データソース指定からピボットテーブル作成まで全自動化することもできますよ。

今回は、エクセルVBAで作成したピボットテーブルに、これまたエクセルVBAで行、列、値のフィールドを追加する方法をご紹介します!

前回までご紹介した内容と今回ご紹介する内容を使えば、ピボットテーブル作成からフィールドの設定まで完全自動化だってできますよ!

AddFieldsメソッドで行と列フィールドを追加する

まずは、ピボットテーブルに行と列フィールドを追加する方法から。

そのためには、PivotTableオブジェクトのAddFieldsメソッドを使います。

AddFieldsメソッドは、ピボットテーブルに行、列フィールドを追加するメソッドです。

記述方法はこちら。

PivotTableオブジェクト.AddFields ColumnFields:=Array(項目名), RowFields:= Array(項目名)

各オプションの使い方は、この「月別仕入表」というピボットテーブルを使って見ていきましょう。
ピボットテーブル,サンプル

ColumnFieldsオプションで列に追加するフィールドを指定

ピボットテーブルの列フィールドに追加する項目を指定するオプションです。

先にお見せしたピボットテーブル「月別仕入表」で、このピボットテーブルの列に「品目」フィールドを追加したい場合、下記のように記述します。

そしてこのコードをピボットテーブル「月別仕入表」で実行してみると…
ピボットテーブル,AddField実行後,列追加

真っ白だったピボットテーブルの列に、「品目」フィールドが追加されていますね。

RowFieldsオプションで行に追加するフィールドを指定

ピボットテーブルの行フィールドに追加する項目を指定するプロパティです。

使用例はこちら。

では、こちらの例も列に「品目」を追加した「月別仕入表」で実行してみましょう。
ピボットテーブル,AddField実行後,行追加

この通り、RowFieldsオプションで指定したフィールドが、ピボットテーブルの行に追加されています。

これで、行と列のフィールドは追加できました!

AddDataFieldメソッドで値フィールドを追加する

お次は、 PivotTableオブジェクトのAddDataFieldメソッドを使って、ピボットテーブルに値フィールドを追加していきましょう。

AddDataFieldメソッドは、ピボットテーブルに値フィールドを追加するメソッドです。

記述方法はこちら。

PivotTableオブジェクト.AddDataField Field:=PivotFieldsオブジェクト Caption:=”項目のテキスト”,Function:=値フィールドの関数

Fieldオプションで追加する値フィールドを指定する

ピボットテーブルの値フィールドに追加したい項目を指定するオプションで、AddDataFieldメソッドの必須項目です。

例えばこんな感じで記述します。

AddFieldsと違って、こちらは項目を PivotFieldsオブジェクトで指定するので、お間違えのなきよう。

Captionオプションで項目名を指定する

ピボットテーブルに追加する値フィールドの項目名を指定するオプションです。

例えば、「仕入数」という項目を「数量」という項目名でピボットテーブルに追加したい場合は、こんな風に記述します。

必須項目ではなく、このオプションを使わないで項目を追加した場合は値フィールドの名前は元の項目名のままでピボットテーブルに追加されます。

Functionオプションで値フィールドに使用する関数を指定する

値フィールドに表示する値に使用する関数を指定するオプションです。

関数って…?と思われたかもしれませんが、ピボットテーブルの値フィールドは、「値フィールドの設定」で集計方法を指定できますよね。

これこれ。
ピボットテーブル,値フィールドの設定

Functionは、この「合計」や「データの個数」を指定するオプションです。

例えば、ピボットテーブルの値フィールドの合計を表示したい場合は、こんな感じで記述します。

AddFieldsメソッドとAddDataFieldメソッドでピボットテーブルにフィールドを追加する

サンプルプログラム

では、上でお見せしたピボットテーブル「月別仕入表」の列に「品目」、行に「仕入日」、値に「仕入数」を追加するコードを実行してみます。

「月別仕入表」は、「ピボットテーブル」というシートに作成していることとします。

コードはこちら。

サンプルプログラムの実行結果

上のコードを実行した結果がこちら。
AddDataField,AddField,実行後

真っ白だったピボットテーブルに、行も列も値も追加されていますね。

これで、ピボットテーブルのフィールドに項目が追加できました!

まとめ

今回は、すでに作成されたピボットテーブルに、フィールドを追加する方法をご紹介しました。

今回の内容と、前回、前々回のピボットキャッシュ作成~ピボットテーブル作成と組み合わせれば、フィールドがセットされたピボットテーブル作成まで一気通貫で作成することも可能ですね。

それでは、最後までお読みいただきありがとうございました!

The following two tabs change content below.

ノグチ

元製造子会社SE、ERPパッケージシステムコンサルタント(販売管理、購買管理、生産管理、設備管理他)。 業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁ、楽にお仕事してもらえたらいいなぁと日々夢見ております。