【VBA】テーブル化された表の、条件に一致したデータの合計値を取得する

例えばテーブル「productテーブル」の
 ・列「productName」が”りんご”の
 ・列「price」の合計値
を取得できます!

合計値は500
合計値は500


VBAから
 ・ワークシート関数「SumIf」
を使用することで、取得できます!

PR

VBAコード

ここでは例として、
 ・シート「data」上の
 ・テーブル化された表「productテーブル」の
 ・列「productName」が”りんご”
 ・列「price」の合計値
します。

合計値は500
合計値は500
Option Explicit

Sub sample()

    Dim ws As Worksheet
    Dim tableName As String
    Dim productColumnName As String
    Dim priceColumnName As String
    Dim productNameRange As Range
    Dim priceRange As Range
    Dim targetStr As String
    Dim total As Long

    '対象シート
    Set ws = Worksheets("sample")
    'テーブル名
    tableName = "productテーブル"
    '列名
    productColumnName = "productName"
    '列名
    priceColumnName = "price"
    '対象文字列
    targetStr = "りんご"

    With ws.listObjects(tableName)
        '列「productName」のセル範囲を取得
        Set productNameRange = .ListColumns(productColumnName).DataBodyRange
        '列「price」のセル範囲を取得
        Set priceRange = .ListColumns(priceColumnName).DataBodyRange
    End With
    
    '列「productName」が「対象文字列」の列「price」の合計値を取得
    total = WorksheetFunction.SumIf(productNameRange, targetStr, priceRange)

    MsgBox (targetStr & "の合計値は『" & total & "』です。")
    
End Sub

以下を指定します(15~23行目)。
※状況に応じて任意の値を指定してください。

・対象シート
・テーブル名
・列名
・対象文字列

ワークシート関数「SumIf」の引数に以下を指定します(33行目)。

第1引数・・・条件にしたいセル範囲
第2引数・・・条件の内容
第3引数・・・条件に一致した合計を取得したいセル範囲

PR

実行結果

テーブル化された表の、条件の一致したセルの合計値を取得できました。

実行結果
実行結果
PR

参考①

表のテーブル化については、以下の記事をご確認ください。

PR

参考②

テーブル化されていない表でも、同様のことができます。

詳細は以下の記事をご確認ください。
※以下の記事で紹介しているやり方は「おおざっぱなやり方」です。

PR

参考③

上記で使用したワークシート関数「SumIf」の詳細は、公式サイトをご確認ください。