ワークシート関数によるカウント処理

このページではカウント処理に関係する Count、CountA、CountBlank、CountIf、CountIfs 関数について説明します。

スポンサーリンク

Count、CountA、CountBlank 関数

Count 関数は引数に指定した範囲における数値の個数をカウントします。
CountA 関数は入力済みの個数をカウントします。
CountBlank 関数はブランクセルの個数をカウントします。

※入力済みとは、スペースや数式が入力されたセルも含みます。
※ブランクセルとは、未入力のセル以外に、数式により空白文字列(””)が返ってくるセルも含みます。

構文
WorksheetFunction.Count(範囲1 [, 範囲2…])
WorksheetFunction.CountA(範囲1 [, 範囲2…])

【戻り値】 倍精度浮動小数点型 (Double)
引数名 省略 説明
範囲 カウント対象のセル範囲(レンジオブジェクト)または配列を指定します。
※…1つ目は省略不可。2つ目以降は任意。
構文
WorksheetFunction.CountBlank(範囲)

【戻り値】 倍精度浮動小数点型 (Double)
引数名 省略 説明
範囲 × カウント対象のセル範囲(レンジオブジェクト)を指定します。

さまざまなセルのカウント例

以下のマクロはワークシート上の数値、数式、文字列、ブランクを含むセル範囲を対象として、数値セル、入力済みセル、ブランクセルの個数をそれぞれカウントする例です。

Sub sample_wf013_01()
    Dim cnt1 As Long
    Dim cnt2 As Long
    Dim cnt3 As Long
    Dim myRange As Range

    Set myRange = Range("A1:A10")
    cnt1 = WorksheetFunction.Count(myRange)
    cnt2 = WorksheetFunction.CountA(myRange)
    cnt3 = WorksheetFunction.CountBlank(myRange)

    Debug.Print "数値セルの個数 = " & cnt1
    Debug.Print "入力済セルの個数 = " & cnt2
    Debug.Print "ブランクセルの個数 = " & cnt3
End Sub

<データ>
A3セルには数式が入力されています。
A4セルには半角スペースが1つだけ入力されています。
A5セルには全角スペースが1つだけ入力されています。
A8セルは未入力です。
A9セルは空白文字列を返す数式が入力されています。

数値、文字列、ブランクを含むテストデータ
数値、文字列、ブランクを含むテストデータ

CountIf 関数

CountIf 関数は引数に指定したセル範囲のうち、1つの条件に合致するセルの個数を返します。

構文
WorksheetFunction.CountIf(範囲, 条件)

【戻り値】 倍精度浮動小数点型 (Double)
引数名 省略 説明
範囲 × カウント対象のセル範囲(レンジオブジェクト)を指定します。
条件 × カウント条件を指定します。 条件の中には < > などの記号や、 ?(任意の一文字) や *(任意の文字列) などのワイルドカードを使うことができます。 条件の指定方法は条件分の書き方 をご覧ください。

条件付きのカウント例

以下のマクロはワークシート上にある売上表において、1月売上150万以上の店舗数をカウントする例です。

Sub sample_wf013_02()
    Dim cnt As Long

    '1月売上150万以上の店舗数
    cnt = WorksheetFunction.CountIf(Range("B4:B13"), ">=150")
    Debug.Print "店舗数 = " & cnt
End Sub

テスト用の売上表です。下図の赤枠点線内が条件に合致したセルになります。

全店舗1~3月分売上表
全店舗1~3月分売上表

CountIfs 関数

CountIfs 関数は引数に指定したセル範囲のうち、複数の条件すべてに合致するセルの個数を返します。

構文
WorksheetFunction.CountIfs(範囲1, 条件1, [, 範囲2, 条件2 …])

【戻り値】 倍精度浮動小数点型 (Double)
引数名 省略 説明
範囲 カウント対象のセル範囲(レンジオブジェクト)を指定します。
条件 カウント条件を指定します。 条件の中には < > などの記号や、 ?(任意の一文字) や *(任意の文字列) などのワイルドカードを使うことができます。 条件の指定方法は条件分の書き方 をご覧ください。
※…1つ目は省略不可。2つ目以降は任意。

複数の条件を指定したカウント例

以下のマクロはワークシート上にある売上表において、Cグループ店舗のうち、1月売上150万以上の店舗数をカウントする例です。

Sub sample_wf013_03()
    Dim cnt As Long

    'Cグループ店舗のうち、1月売上150万以上の店舗数
    cnt = WorksheetFunction.CountIfs(Range("A4:A13"), "C*", _
                                     Range("B4:B13"), ">=150")
    Debug.Print "店舗数 = " & cnt
End Sub

前の sample_wf013_02 で使用したものと同じです。下図の赤枠点線内がすべての条件に合致したセルになります。

全店舗1~3月分売上表
全店舗1~3月分売上表

 

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