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

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

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

合計値を取得する

ここでは例として、
 ・シート「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」を指定します。


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

実行結果
実行結果

最大値を取得する

ここでは例として、
 ・テーブル化された表「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」を指定
します


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

実行結果
実行結果

最小値を取得する

ここでは例として、
 ・テーブル化された表「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」を指定
します


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

実行結果
実行結果

参考

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