【VBA】テーブル化された表の、条件に一致しないデータの件数を取得する【COUNTIF】

例えばテーブル「productテーブル」の
 ・列「productName」が「りんごでない」の件数
を取得できます!
※条件に一致しないデータの件数を取得できます。

「りんごでない」の件数は4。
「りんごでない」の件数は4。


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

CountIf関数の条件に
 ・比較演算子「<>
を使用することで、取得できます!
※「<>」により「条件に一致しない」を実現できます。

PR

VBAコード

ここでは例として、
 ・シート「data」上の
 ・テーブル化された表「productテーブル」の
 ・列「productName」が「りんごでない」の件数を取得
します。

Option Explicit

Sub sample()
    
    Dim productNameRange As Range
    Dim count As Long
    
    With Worksheets("data").ListObjects("productテーブル")
        '列「productName」のセル範囲を取得
        Set productNameRange = .ListColumns("productName").DataBodyRange
    End With
    
    '列「productName」が「りんごでない」の件数を取得
    count = WorksheetFunction.CountIf(productNameRange, "<>" & "りんご")

    MsgBox ("りんごでないの件数は『" & count & "』です。")
    
End Sub

「Worksheetオブジェクト」の「ListObjects」プロパティにより、「ListObjectオブジェクト」を取得します(8行目)。

「ListObjectオブジェクト」の「ListColumns」プロパティにより、「ListColumnオブジェクト」を取得します(10行目)。

「ListColumnオブジェクト」の「DataBodyRange」プロパティにより、「指定した列のセル」を取得します(10行目)。
※上記では列「productName」のセルを取得しています。

ワークシート関数「CountIf」のより、「条件に一致しないデータの件数」を取得します(14行目)。
※「WorksheetFunctionオブジェクト」の「CountIf」メソッドにより取得します。

引数に以下を指定します。

第1引数・・・条件にしたいセル範囲
第2引数・・・「<>」と「条件 ※左記により「条件に一致しない」となります。

PR

実行結果

テーブル化された表の、条件に一致しないデータの件数を取得できました。
※「りんごでない」の件数である「4」が取得できました。

実行結果
実行結果
PR

参考①

VBAでなく、シート上でExcel関数のみで同様のことができます。

詳細は以下の記事をご確認ください。

PR

参考②

表をテーブル化する方法は、以下の記事をご確認ください。

PR

参考③

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Worksheetオブジェクト」の「ListObjects」プロパティ


●「ListObjectオブジェクト」の「ListColumns」プロパティ


●「ListColumnオブジェクト」の「DataBodyRange」プロパティ



●ワークシート関数「CountIf」
※「WorksheetFunctionオブジェクト」の「CountIf」メソッド


タイトルとURLをコピーしました