「エクセル VBA COUNTIF 空白以外」
「excel vba countif 空白を除く」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが、割とあります。
Excel VBAから、ワークシート関数のCOUNTIFを使って空白ではないセルの数をカウントするには、どのようなコードを書けばいいのか探していた方による検索です。
WorksheetFunction.CountIfで空白以外をカウントするサンプルマクロ
以下のSubプロシージャを実行すると、A1:A10セルのうち、空白ではないセルの数がメッセージボックスに表示されます。Dim n As Long
n = WorksheetFunction.CountIf(Range("A1:A10"), "<>")
MsgBox n
End Sub
サンプルマクロの解説
「エクセル VBA COUNTIF 空白以外」
「excel vba countif 空白を除く」
と検索なさった方は、WorksheetFunctionオブジェクトのCountIfメソッドの引数を、どう指定すればいいのか戸惑っていたのでしょう。
WorksheetFunction.CountIfメソッドの第1引数
オブジェクトブラウザー等を確認すればわかるとおり、第1引数にはRangeオブジェクトを指定します。
具体的にはRangeオブジェクトを取得する何らかのコード(オブジェクト式)を書けばOKです。
上記のサンプルでは、Rangeオブジェクトを取得するプロパティのうち、もっとも基本的なRangeプロパティを使っています。
n = WorksheetFunction.CountIf(Range("A1:A10"), "<>")
WorksheetFunction.CountIfメソッドの第2引数
第2引数には条件を指定します。
空白以外という条件は「"<>"」(比較演算子のノットイコールをダブルクォーテーションで括った状態)です。
かなり不思議な記述ですが、
n = WorksheetFunction.CountIf(Range("A1:A10"), "<>")
を、
n = WorksheetFunction.CountIf(Range("A1:A10"), "<>" & "")
と書くと、多少ましではないかと思います。
空白ではないということで、空白文字列を意味する「""」(ダブルクォーテーション2個)の前に比較演算子のノットイコール「<>」を連結した「"<>" & ""」を、WorksheetFunctionオブジェクトのCountIfメソッドの第2引数に指定したのが、
n = WorksheetFunction.CountIf(Range("A1:A10"), "<>" & "")
です。
「"<>" & ""」は、結局「"<>"」と同じですから「"<>" & ""」の「 & ""」を省略しているのが、
n = WorksheetFunction.CountIf(Range("A1:A10"), "<>")
です。
WorksheetFunction.CountIfの第2引数については、COUTIF関数を使って空白以外のセルをカウントするワークシート上の数式を、先に理解することをおすすめします。
WorksheetFunnction.CountIfの戻り値はDouble
メインテーマとは関係ありませんけれど、WorksheetFunnction.CountIfメソッドの戻り値は、
Doubleなんですね。
この記事を書いていて気付きました。
- Newer:VBAで月を英語表記に-Format関数
- Older:セル内の数値に円を付けるには-#,##0"円"
Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » VBAでCountIfを使って空白以外のセルをカウント