例えばテーブル「productテーブル」の
・列「productName」が「りんごでない」の
・列「price」の合計値
を取得できます!
※条件に一致しないデータの合計値を取得できます。
VBAから
・ワークシート関数「SumIf」
を使用することで、取得できます!
具体的には「WorksheetFunctionオブジェクト」の「SumIf」メソッドを使用します。
SumIf関数の条件に
・比較演算子「<>」
を使用することで、取得できます!
※「<>」により「条件に一致しない」を実現できます。
VBAコード
ここでは例として、
・シート「data」上の
・テーブル化された表「productテーブル」の
・列「productName」が「りんごでない」の
・列「price」の合計値を取得
します。
Option Explicit
Sub sample()
Dim productNameRange As Range
Dim priceRange As Range
Dim total As Long
With Worksheets("data").ListObjects("productテーブル")
'列「productName」のセル範囲を取得
Set productNameRange = .ListColumns("productName").DataBodyRange
'列「price」のセル範囲を取得
Set priceRange = .ListColumns("price").DataBodyRange
End With
'列「productName」が「りんごでない」の列「price」の合計値を取得
total = WorksheetFunction.SumIf(productNameRange, "<>" & "りんご", priceRange)
MsgBox ("「りんごでない」の列「price」の合計値は『" & total & "』です。")
End Sub
実行結果
テーブル化された表の、条件に一致しないデータの合計値を取得できました。
※「りんごでない」の列「price」の合計値である「160」が取得できました。
参考①
VBAでなく、シート上でExcel関数のみで同様のことができます。
詳細は以下の記事をご確認ください。
参考②
表をテーブル化する方法は、以下の記事をご確認ください。
参考③
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「Worksheetオブジェクト」の「ListObjects」プロパティ
●「ListObjectオブジェクト」の「ListColumns」プロパティ
●「ListColumnオブジェクト」の「DataBodyRange」プロパティ
●ワークシート関数「SumIf」
※「WorksheetFunctionオブジェクト」の「SumIf」メソッド