テーブル操作第10回目です。テーブルには集計行を表示することができます。また、集計行が不要になったら消すことができます。ただし手動で操作しなければいけないので結構面倒です。
テーブルの集計行をVBAマクロで表示を切り替えられるようにしたいと思います。それから、集計行の値を取得するにはどうしたらいいのか、その方法について勉強していきましょう(^^)/
そうなんです。テーブルを選択していないと表示されないし、設定する場所がどこだったか探しちゃうんですよね(^^;
【この記事でわかることは】
・テーブル集計行の表示を操作する方法がわかります
・集計行から値を取得する方法がわかります
前回記事のおさらいは、下のカードをクリックすれば開きます(^^ゞ
前回記事は、テーブルのデータを編集する方法とテーブルからデータを取得する方法の解説記事でした。覗いてみてね(^^)/
テーブル集計行の表示を操作する
テーブル集計行の表示を手動で切り変えるのは面倒なので(^^ゞ VBAで操作する方法を考えます。
テーブル集計行の表示切替を行うには
テーブル集計行は、ListObjectオブジェクトの ShowTotals プロパティを使います。
ShowTotals プロパティ
ShowTotals プロパティは ListObject の集計プロパティです。
集計行を表示するかどうかを示すブール型 (Boolean) の値を取得または設定します。
「True = 表示」、「False = 非表示」です。(テーブルが存在しないとエラーになる)
・ということは、テーブルの ShowTotals プロパティの現在の設定を調べてその反対を設定すれば表示の切り替えが出来るということですね。
・「ブール型」を調べるのなら、論理否定演算子の Not演算子 を使うのがうってつけです。
Not True の場合 → False 、Not False の場合 → True を返します。
「テーブル.ShowTotals = Not テーブル.ShowTotals」の1行で済みます。
・もちろん If ステートメントを使ってもいいのですが(^^;
・アクティブシートの1番目のテーブル集計行の表示を切り替えるサンプルです。
'テーブル集計行の表示を切り替えます
Sub SetShowTotals()
With ActiveSheet.ListObjects(1)
.ShowTotals = Not .ShowTotals 'Not演算子でTrue ⇔ False切替
End With
End Sub
・手動では、テーブルを選択していないと切り替えが出来ませんでしたが、VBAマクロならば選択していなくても切り替えることができました。
テーブル集計行個別セルの表示設定
指定したテーブルの集計行の各列に集計方法を設定するには、テーブルの各列を表すListColumnオブジェクトのTotalsCalculationプロパティを使用します。値の設定および取得ができます。
TotalsCalculationプロパティ
列挙型の値に基づいて、リスト列の集計行の計算の種類を決定します。
TotalsCalculationプロパティの書式
【取得】ListColumnオブジェクト.TotalsCalculation
【設定】ListColumnオブジェクト.TotalsCalculation = 設定値
設定値は、集計方法を示すXlTotalsCalculation列挙型の定数または値で指定します。
XlTotalsCalculation列挙型
定数 | 値 | 内容 |
xlTotalsCalculationNone | 0 | 計算なし |
xlTotalsCalculationSum | 1 | 合計 |
xlTotalsCalculationAverage | 2 | 平均 |
xlTotalsCalculationCount | 3 | 空ではないセルの数 |
xlTotalsCalculationCountNums | 4 | 数値データの数 |
xlTotalsCalculationMin | 5 | リストの最小値 |
xlTotalsCalculationMax | 6 | リストの最大値 |
xlTotalsCalculationStdDev | 7 | 標準偏差値 |
xlTotalsCalculationVar | 8 | 変数 |
xlTotalsCalculationCustom | 9 | ユーザー設定の計算 |
・テーブル集計行のセルの設定をVBAで個別に行うサンプルコード
'集計行個別セルを表示設定する
Sub SetShowTotalsCell()
With ActiveSheet.ListObjects(1)
.ShowTotals = True
.ListColumns(3).TotalsCalculation = 2 '2 = 平均
.ListColumns("クリック数").TotalsCalculation = 2
End With
End Sub
・ShowTotals = True で必ず表示させておく必要があります。
・5行目、ListColumns(3) は列数(Index)または「列タイトル名」で指定します。
・6行目、ListColumns(“クリック数”) が「列タイトル名」で指定した例です。
・TotalsCalculation = n のnは XlTotalsCalculation 列挙型定数又は値で指定します。
テーブル集計行から情報を取得する
・テーブル集計行からデータ取得するサンプルコードです。
'集計行の情報を取得する
Sub GetShowTotals()
Dim x(3) As Variant
With ActiveSheet.ListObjects(1)
.ShowTotals = True
x(0) = .TotalsRowRange.Address
x(1) = .ListColumns(3).Index
x(2) = .TotalsRowRange(x(1)).Formula
x(3) = .TotalsRowRange(x(1)).Value
MsgBox "集計行Address = " & x(0) & vbCrLf & _
"集計行[表示回数]の列番 = " & x(1) & vbCrLf & _
"集計行[表示回数]の計算式は = " & x(2) & vbCrLf & _
"集計行[表示回数]の表示データは = " & x(3)
End With
End Sub
・変数を配列で用意しました。
・取得した情報をメッセージボックスで表示します。
・実際に使用する場合の参考としてください。
・実行結果のメッセージボックスはこちらです。
集計行に文字列を代入して書式設定する
・テーブル集計行に文字列を代入して書式設定するサンプル
'集計行のセルに文字列を代入して書式設定する
Sub GetShowTotalsCell()
With ActiveSheet.ListObjects(1)
.ShowTotals = True
.ListColumns(3).TotalsCalculation = 2
'.ListColumns("表示回数").Index
'文字列をセットして右寄せにする
.TotalsRowRange(2).Value = "平均値⇒"
.TotalsRowRange(2).HorizontalAlignment = xlRight
.TotalsRowRange(2).Font.ColorIndex = 3
End With
End Sub
・集計行のセルは書式を変更できます。
・3番目のセルは平均に設定しています。
・2番目のセルに文字列をセットしています(文字列は左寄せになる)
・その後、書式を右寄せ、フォントを赤に設定しています。
まとめ(おわりに)
・いかがでしたでしょうか?
・「いつも汎用でだれでも使えて活用できるように考えてVBAを使う」というポリシーを念頭に記事を書いています。
・今回も、記事内で使用したコードのサンプルファイルを登録していますのでご利用ください。
・今までの記事のサンプルも登録していますのでよろしければお使いください(^^)
まとめと感想など
テーブルの集計行を活用することは少ないかもしれませんが、うまく活用すればリスト全体の現状をタイムリーに把握するには有効です。
集計行はレコードが増減しても自動的に集計値が現行化されます。
例えば、複数のテーブルの集計行数値を、一つの場所で表示するなどすれば、どのデータがどのくらいの量なのかなど一括で把握できるのではないでしょうか。
テーブル集計行もうまく活用できれば面白そうですね(^^)
テーブル操作については一区切りにして、次回は「Functionステートメント」ついて解説したいと思います(^^)
★★★ ブログランキング参加中! クリックしてね(^^)/ ★★★
今後の記事について
今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
「汎用でだれでも使えて活用できるように考えてVBAを使う」というポリシーで、記事を継続して書いていきたいと思っています。どうぞよろしくお願いしますm(_ _)m
【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう常に検討しています(^^ゞ
・その他雑記的に「プチネタなど」もいろいろ考えていきたいと思います・・・・・
・今後の記事にもご期待ください(^^)/
記事のサンプルファイルをダウンロードできます
今回の記事のサンプルをダウンロードできるようこのリンク先に登録しています!
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください
【今回分かったことは】
・テーブル集計行の表示を切り替える方法がわかりました
・テーブル集計行個別セルの表示設定方法がわかりました
・集計行から値を取得する方法がわかりました