EXCEL VBA 複数のワークシート集計・異なるワークシートの串刺し集計(統合:Consolidate・異なる縦軸・横軸集計)

 

 

EXCEL VBA 複数のワークシート集計・異なるワークシートの串刺し集計(統合:Consolidate・異なる縦軸・横軸集計)

 

 

 ●はじめに

今回説明するのは、複数のワークシートを集計するConsolidateメゾットの利用方法を説明いたします。通常EXCELで複数シートを串刺し集計を行う場合は、同じ形の表を串刺しする必要がありますが、Consolidateメゾットのパラメーターを利用する事で、縦軸・横軸に異なる項目や並び順が違っていても串刺し集計する事ができます。複数のワークシートデータを一つのシートへデータを纏める・集計する場合は、とても便利な機能だとおもいます。それでは、サンプルプログラムを交えて順番に説明致します。

 

●【EXCE VBAセル範囲の串刺し集計・計算・カウント・平均】については、下記を参照して下さい】

EXCEL VBA セル範囲の串刺し集計・計算・カウント・平均(テクニック)

 

●【Consolidateメソッド (Excel)(Microsoft様)、下記を参照して下さい】

https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.consolidate

 

 

 

 ●書式の説明

● Consolidateメゾットを利用するには、下記の通りに設定を行います。

 

 

●Function:種類一覧

Function(名前)説明
xlsum合計値
xlAverage平均値
xlcountカウント
xlCountNums数値のみカウント
xlmax最大値
xlmin最小値
xlproduct

 

●Consolidateメソッド・パラメーター一覧

パラメーターデータ型説明
SourcesVariant統合(集計)元範囲を参照する、R1C1 形式の文字列を指定します。 指定するセル参照には、必ず統合するシートのパスを含めます。また、複数シートを選択する事も可能。
FunctionVariantXlConsolidationFunction の定数の1つで、統合(集計)の種類を指定します。
TopRowVariant統合(集計)を行うとき、統合する範囲の上端行に入力されている列見出しに基づく場合は、 True を指定します。 データの位置に基づく場合は、 False を指定します。 既定値は False です。
LeftColumnVariant統合(集計)を行うとき、統合する範囲の左端列に入力されている行見出しに基づく場合は、 True を指定します。 データの位置に基づく場合は、 False を指定します。 既定値は False です。
CreateLinksVariant統合を行うとき、ワークシート リンクを使う場合は、 True を指定します。 データをコピーする場合は、 False を指定します。 既定値は False です。

 

【使用例】
●下記の記述例では、【Sheet2】と【Sheet3】のデータをSUM関数でSheet1に統合(集計)します。

 

●上記パラメーター設定説明
・Sources:Sheet2のセルA1:C3・Sheet3のセルA1:C3の範囲
・Function:= xlsum (合計値)
・TopRow:= Ture (列見出しを利用します)  ※Trueは、利用する・Falseは、利用しない。
・LeftColumn:=Ture(行見出しを利用します) ※Trueは、利用する・Falseは、利用しない。
・CreateLinks:=True (ワークシートリンクを利用します) ※Trueは、利用する・Falseは、利用しない。

 

● パラメーター【Sources】に参照元のセル範囲を指定する場合は、R1C1形式で設定します。
例:【R1C1】形式 ⇒ R=行 C=列を意味します。 R1C1=”A1″  R2C2=”B2″  R10C10=”J10″

 

 

 

EXCEL VBA 複数のワークシート集計・異なるワークシートの串刺し集計① 見出し設定なし

 

 

 ●プログラム説明 (Consolidateメソッド:サンプル①)

下記のサンプルプログラムは、複数のワークシートを集計するConsolidateメソッドの利用方法を説明します。

●下記パラメーター設定説明
Sources:Sheet2のセルA1:J10・Sheet3のセルA1:J10の範囲
Function:= xlsum (合計値)
・TopRow:= False (列見出しを利用しない)  
・LeftColumn:=False(行見出しを利用しない)
・CreateLinks:=False (ワークシートリンクを利用しない)


★注意:今回の設定では、列行共に見出し設定をしていないので、項目位置を無視して串刺し集計を行っています。

【プログラムの流れ】
①転記先のSheet1データを全てクリアします。
②Sheet2とSheet3のデータをSheet1へ統合(集計:Sum)します。

 

 

 

●実行前~実行後 ※プログラム実行後、Sheet2+Sheet3のデータを元にSheet1に統合(集計)されました。上記のプログラムでは、見出しの設定を行っていませんので、同じセル位置にで串刺し集計を行っています。
(画面クリックして拡大)

 

 

 

EXCEL VBA 複数のワークシート集計・異なるワークシートの串刺し集計② 列見出し設定

 

 

●プログラム説明 (Consolidateメソッド:サンプル②)

下記のサンプルプログラムは、複数のワークシートを集計するConsolidateメソッドの利用方法を説明します。

●下記パラメーター設定説明
Sources:Sheet2のセルA1:J10・Sheet3のセルA1:J10の範囲
Function:= xlsum (合計値)
・TopRow:= Ture (列見出しを利用する)  
・LeftColumn:=False(行見出しを利用しない)
・CreateLinks:=False (ワークシートリンクを利用しない)

★注意:今回の設定では、列見出し設定のみを行っていますので、列項目の位置を元に串刺し集計を行っています。

【プログラムの流れ】
①転記先のSheet1データを全てクリアします。
②Sheet2とSheet3のデータをSheet1へ統合(集計:Sum)します。

 

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、Sheet2+Sheet3のデータを元にSheet1に統合(集計)されました。上記のプログラムでは、列見出しの設定を行っていますので、列位置にて串刺し集計を行っています。
(画面クリックして拡大)

 

 

 

EXCEL VBA 複数のワークシート集計・異なるワークシートの串刺し集計③ 行見出し設定

 

 

●プログラム説明 (Consolidateメソッド:サンプル③)

下記のサンプルプログラムは、複数のワークシートを集計するConsolidateメソッドの利用方法を説明します。


●下記パラメーター設定説明

Sources:Sheet2のセルA1:J10・Sheet3のセルA1:J10の範囲
Function:= xlsum (合計値)
・TopRow:= False  (列見出しを利用しない)  
・LeftColumn:= Ture(行見出しを利用する)
・CreateLinks:=False (ワークシートリンクを利用しない)

 

★注意:今回の設定では、行見出し設定のみを行っていますので、行項目の位置を元に串刺し集計を行っています。

【プログラムの流れ】
①転記先のSheet1データを全てクリアします。
②Sheet2とSheet3のデータをSheet1へ統合(集計:Sum)します。

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、Sheet2+Sheet3のデータを元にSheet1に統合(集計)されました。上記のプログラムでは、行見出しの設定を行っていますので、行位置にて串刺し集計を行っています。
(画面クリックして拡大)

 

 

EXCEL VBA 複数のワークシート集計・異なるワークシートの串刺し集計④ 列見出し設定・行見出し設定 ※おすすめ!

 

 

●プログラム説明 (Consolidateメソッド:サンプル④)

下記のサンプルプログラムは、複数のワークシートを集計するConsolidateメソッドの利用方法を説明します。
※上記に3パターン(サンプル)の説明をいたしましたが、Consolidateメゾットの機能を発揮するのは、このサンプル④の説明になります。列見出し・行見出しを利用する事で、異なる表データも項目に応じにて正確に統合(集計)する事が出来ます。


●下記パラメーター設定説明

Sources:Sheet2のセルA1:J10・Sheet3のセルA1:J10の範囲
Function:= xlsum (合計値)
・TopRow:= Ture  (列見出しを利用する)  
・LeftColumn:= Ture(行見出しを利用する)
・CreateLinks:=False (ワークシートリンクを利用しない)

 

★注意:今回の設定では、列見出し・行見出し共に設定を行っていますので、列見出し・行見出し位置を共に串刺し集計を行っています。

【プログラムの流れ】
①転記先のSheet1データを全てクリアします。
②Sheet2とSheet3のデータをSheet1へ統合(集計:Sum)します。

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、Sheet2+Sheet3のデータを元にSheet1に統合(集計)されました。上記のプログラムでは、列見出し・行見出しの設定を行っていますので、列位置・行位置を共に串刺し集計を行っています。
(画面クリックして拡大)

 

 

EXCEL VBA 複数のワークシート集計・異なるワークシートの串刺し集計⑤ 列見出し設定・行見出し設定・ワークシートリンク設定

 

 

●プログラム説明 (Consolidateメソッド:サンプル⑤)

下記のサンプルプログラムは、複数のワークシートを集計するConsolidateメソッドの利用方法を説明します。


●下記パラメーター設定説明

Sources:Sheet2のセルA1:J10・Sheet3のセルA1:J10の範囲
Function:= xlsum (合計値)
・TopRow:= Ture  (列見出しを利用する)  
・LeftColumn:= Ture(行見出しを利用する)
・CreateLinks:=Ture(ワークシートリンクを利用する)

★注意:今回の設定では、列見出し・行見出し共に設定を行っていますので、列見出し・行見出し位置を共に串刺し集計を行っています。なお、ワークシートリンクの設置も行っています。

【プログラムの流れ】
①転記先のSheet1データを全てクリアします。
②Sheet2とSheet3のデータをSheet1へ統合(集計:Sum)します。

 

 

 ●実行前~実行後 ※プログラム実行後、Sheet2+Sheet3のデータを元にSheet1に統合(集計)されました。上記のプログラムでは、列見出し・行見出しの設定を行っていますので、列位置・行位置を共に串刺し集計を行っています。なお、ワークシーリンクの設定を行っていますので、Sheet1に統合された詳細を表示する事ができます。
(画面クリックして拡大)

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。