【VBA】テーブル化された表の、指定した列の合計値/最大値/最小値を取得する

テーブル化された表の指定した列の
 ・合計値
 ・最大値
 ・最小値
を取得する方法を記載します!

VBAから
 ・ワークシート関数「Subtotal」
を使用することで、取得できます!
具体的には「WorksheetFunctionオブジェクト」の「Subtotal」メソッドを使用します。

PR

合計値を取得する

ここでは例として、
 ・シート「data」上の
 ・テーブル化された表「productテーブル」の列「price」の
 ・合計値を取得
します。

列「price」の合計値は「1100」
列「price」の合計値は「1100」
Option Explicit

Sub sample()
    
    Dim total As Long
    Dim table As ListObject
    
    Set table = Worksheets("data").ListObjects("productテーブル")
    
    '列「price」の合計値を取得
    total = WorksheetFunction.Subtotal(9, table.ListColumns("price").DataBodyRange)

    MsgBox ("列「price」の合計値は『" & total & "』です。")
    
End Sub

ワークシート関数「Subtotal」の第1引数に「9」を指定することで、「合計値」を取得できます。
※オートフィルタにより非表示になっている値も対象となります。
※非表示になっている値を対象外にする場合は、「109」を指定します。


上記を実行すると、「合計値」が取得できたことを確認できます。

実行結果
実行結果
PR

最大値を取得する

ここでは例として、
 ・テーブル化された表「productテーブル」の列「price」の
 ・最大値を取得
します。

列「price」の最大値は「300」
列「price」の最大値は「300」
Option Explicit

Sub sample()
    
    Dim maxValue As Long
    Dim table As ListObject
    
    Set table = Worksheets("data").ListObjects("productテーブル")
    
    '列「price」の最大値を取得
    maxValue = WorksheetFunction.Subtotal(4, table.ListColumns("price").DataBodyRange)

    MsgBox ("列「price」の最大値は『" & maxValue & "』です。")
    
End Sub

ワークシート関数「Subtotal」の第1引数に「4」を指定することで、「最大値」を取得できます。
※オートフィルタにより非表示になっている値も対象となります。
※非表示になっている値を対象外にする場合は、「104」を指定
します


上記を実行すると、「最大値」が取得できたことを確認できます。

実行結果
実行結果
PR

最小値を取得する

ここでは例として、
 ・テーブル化された表「productテーブル」の列「price」の
 ・最小値を取得
します。

列「price」の最小値は「100」
列「price」の最小値は「100」
Option Explicit

Sub sample()
    
    Dim minValue As Long
    Dim table As ListObject
    
    Set table = Worksheets("data").ListObjects("productテーブル")
    
    '列「price」の最小値を取得
    minValue = WorksheetFunction.Subtotal(5, table.ListColumns("price").DataBodyRange)

    MsgBox ("列「price」の最小値は『" & minValue & "』です。")
    
End Sub

ワークシート関数「Subtotal」の第1引数に「5」を指定することで、「最小値」を取得できます。
※オートフィルタにより非表示になっている値も対象となります。
※非表示になっている値を対象外にする場合は、「105」を指定
します


上記を実行すると、「最小値」が取得できたことを確認できます。

実行結果
実行結果
PR

参考

上記で使用したワークシート関数「Subtotal」の詳細は、公式サイトをご確認ください。
※上記に記載した以外の値も取得できます。平均値など。