COUNTBLANK(空白セルの個数)
指定された範囲に含まれる空白セルの個数を返します。
COUNTBLANK関数の書式
COUNTBLANK(範囲)
範囲に含まれる空白セルの個数を返します。
範囲
空白セルの個数を求めるセル範囲を指定します。
空白文字列 ("") を返す数式が入力されているセルも計算の対象となります。
ただし、数値の 0 を含むセルは計算の対象となりません。
COUNTA関数で数えたセルの個数から、空白文字列 ("") を返す数式が入力されているセルの個数を除きたい場合になります。
CAUNTA関数では、空白文字列 ("") を返す数式が入力されているセルの個数が含まれてしまうからです。
=COUNTIF(範囲,"")
このように指定した結果と同値になります。
COUNTBLANK関数の使用例
以下の表で、B列においてデータの入っている個数を調べるとします。
B列には、
=IF(OR(A1="リンゴ",A1="バナナ"),A1,"")
この数式が入っています。
また、行数は不定なので、何行あるか分からないとして話を進めます。
上に掲載した範囲なら、2個が答えになります。
この2をどのように取得するかという問題です・・・
そこで、COUNT系の関数を試してみると、
=COUNT(B:B) ・・・ 0
=COUNTA(B:B) ・・・ 8
=COUNTBLANK(B:B) ・・・ 1048574
いずれも、回答に結びつく感じがしません。
シートの行数は1048576、これはROWS(A:A)で求めることができます。
=ROWS(A:A)-COUNTBLANK(B:B) ・・・ 2
簡単に求めるなら、これが一番簡単かもしれません。
B列には、
=IF(OR(A1="リンゴ",A1="バナナ"),A1,"")
この数式が入っています。
また、行数は不定なので、何行あるか分からないとして話を進めます。
A列 | B列 |
ABC | |
123 | |
リンゴ | リンゴ |
234 | |
キャベツ | |
バナナ | バナナ |
345 | |
ニンジン |
上に掲載した範囲なら、2個が答えになります。
この2をどのように取得するかという問題です・・・
そこで、COUNT系の関数を試してみると、
=COUNTA(B:B) ・・・ 8
=COUNTBLANK(B:B) ・・・ 1048574
=ROWS(A:A)-COUNTBLANK(B:B) ・・・ 2
簡単に求めるなら、これが一番簡単かもしれません。
ROWS関数は、指定した配列または範囲内の行数を返します。
ROWS(範囲)
ROWS(範囲)
では、関数の知識を総動員して、いろいろやってみましょう。
=COUNTA(B:B)-COUNTBLANK(OFFSET(B1,0,0,COUNTA(B:B),1))
データの入っている範囲をOFFSET関数で作成して・・・
ほとんどの場合は、これで取得できますが、
データが歯抜けになっている場合は、これでは正しく取得できません。
苦労した割には結局使えない・・・という事になります。
実は、COUNTIF関数を使って簡単に求められるのです。
=COUNTIF(B:B,"?*")
または、
=COUNTIF(B:B,">= ") ・・・ =の後ろに半角スペースが入っています。
これで結果が2になります。
さらに、このような場合は、C列に、
=IF(B1="",0,1)
このように追加して、
これであれば、C列をSUM関数だけで求められますし、わかり易いのでないでしょうか。
上記のように、難しい関数を使うまでもなく、別セルで判定を入れる事で簡単に求められるものです。
そもそも、今回の例では、文字列が入っているセルの個数なので面倒ですが、
これが数値の入っているセルの個数なら、単純にCOUNT関数ですんでしまいます。
ここでは、COUNTBLANK関数の説明をしましたが、
COUNTBLANK関数は、使う上で非常に注意が必要な関数です。
COUNTBLANK関数を使おうと思ったら、その前に代替え手段を検討することをお勧めします。
ほとんどの場合、単純な判定で解決するはずです。
以下も参考にしてください。
=COUNTA(B:B)-COUNTBLANK(OFFSET(B1,0,0,COUNTA(B:B),1))
データの入っている範囲をOFFSET関数で作成して・・・
ほとんどの場合は、これで取得できますが、
データが歯抜けになっている場合は、これでは正しく取得できません。
苦労した割には結局使えない・・・という事になります。
=COUNTIF(B:B,"?*")
または、
=COUNTIF(B:B,">= ") ・・・ =の後ろに半角スペースが入っています。
これで結果が2になります。
=IF(B1="",0,1)
このように追加して、
A列 | B列 | C列 |
ABC | 0 | |
123 | 0 | |
リンゴ | リンゴ | 1 |
234 | 0 | |
キャベツ | 0 | |
バナナ | バナナ | 1 |
345 | 0 | |
ニンジン | 0 |
これであれば、C列をSUM関数だけで求められますし、わかり易いのでないでしょうか。
上記のように、難しい関数を使うまでもなく、別セルで判定を入れる事で簡単に求められるものです。
これが数値の入っているセルの個数なら、単純にCOUNT関数ですんでしまいます。
COUNTBLANK関数は、使う上で非常に注意が必要な関数です。
COUNTBLANK関数を使おうと思ったら、その前に代替え手段を検討することをお勧めします。
ほとんどの場合、単純な判定で解決するはずです。
以下も参考にしてください。
・文字列関数 ・日付と時刻の関数 ・情報関数 ・論理関数 ・検索/行列関数 ・数学/三角関数 ・統計関数 ・財務関数 ・エンジニアリング関数 ・データベース関数 ・アドイン/オートメーション ・キューブ ・Microsoft Office のサポート
ワークシート関数の一覧(2010以降)
・Excel2010で追加されたワークシート関数 ・Excel2013で追加されたワークシート関数 ・Excel2016/Excel2019で追加されたワークシート関数 ・Excel2021で追加されたワークシート関数 ・Excel2021より後の365で追加されたワークシート関数 ・Microsoft 365 Insider ・Microsoft「Office のサポート」
同じテーマ「エクセル入門」の記事
開始日から指定された月数だけ前または後の月の最終日を返します。EOMONTH関数の書式 EOMONTH(開始日,月) 開始日 起算日を表す日付を指定します。月 開始日から起算したい月数を指定します。正の数を指定すると、起算日より後の日付を返し、負の数を指定すると、起算日より前の日付を返します。
WEEKDAY関数(曜日に変換)日付に対応する曜日を返します。既定では、戻り値は1(日曜)から7(土曜)までの範囲の整数となります。引数の「種類」により曜日に対する数値は変わりますが、数値としては常に1~7となります。WEEKDAY関数の書式 WEEKDAY(シリアル値,[種類]) シリアル値 曜日を求める日付を指定します。
WEEKNUM関数(その年の何週目)日付がその年の第何週目に当たるかを返します。WEEKNUM関数の書式 WEEKNUM(シリアル値,[週の基準]) シリアル値 日付を指定します。日付は、DATE関数を使って入力するか、他の数式または他の関数の結果を指定します。
COUNTBLANK(空白セルの個数)AVERAGE関数(引数の平均値)
引数の算術平均値を返します。AVERAGE関数の書式 AVERAGE(数値1,[数値2],...) 算術平均値を返します。数値1 平均値を求める1つ目の数値、セル参照(セル範囲)または配列を指定します。
AVERAGEIF関数(検索条件に一致する平均値)・AVERAGEIF関数の書式 ・AVERAGEIF関数の使用例 ・ワイルドカードを使ったAVERAGEIF関数の使用例
SUMPRODUCT関数(配列の対応する要素の積の合計)引数として指定した配列の対応する要素間の積をまず計算し、さらにその和を返します。SUMPRODUCT関数の書式 SUMPRODUCT(配列1,[配列2],[配列3],...) 配列1 計算の対象となる要素を含む最初の配列引数を指定します。配列2,配列3,... 省略可能です。
IFERROR関数(エラーの場合は指定値、以外の場合は数式)数式がエラーとして評価される場合は指定の値を返し、それ以外の場合は数式の結果を返します。※Excel2007以降に追加された関数です。IFERROR関数の書式 IFERROR(値,エラーの場合の値) 値 エラーかどうかをチェックする引数です。
作業セル、計算セル関数の引数に、さらに関数を入れ、関数をネスト(入れ子)にしますが、このネストが多くなると、数式が複雑になりすぎてしまい、他人が見たときに数式の意味するところが分からなくなってしまいます。数式を書いた本人であっても、時が経つと解読が困難になる場合もあります。
SUMIFS関数、COUNTIFS関数.AVERAGEIFS関数(複数条件)SUMIFS関数は、SUMIF関数の条件が複数指定できるようになったものです。COUNTIFS関数は、COUNTIF関数の条件が複数指定できるようになったものです。・COUNTIF関数の書式・COUNTIF関数の使用例・COUNTIF関数でワイルドカードを使用・COUNTIF関数の応用例 AVERAGEIFS関数は、
MOD関数(除算したときの剰余)数値を除数で割ったときの剰余を返します。割り算の余りです。MOD関数の書式 MOD(数値,除数) 数値 割り算の分子となる数値を指定します。除数 割り算の分母となる数値を指定します。戻り値は除数と同じ符号になります。
新着記事NEW ・・・新着記事一覧を見る
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。