VBA 空白セルの個数を取得する

投稿者: | 2021年8月28日
excelアイコン

エクセルバージョン

マイクロソフト365

 

今回はVBAで空白個数を取得する方法を解説します。

それではいってみましょう!

 

今回紹介する3つの方法

・ワークシート関数のCOUNTBLANK関数を使用する。

・ForNext(1行自動取得の場合)を使用する。

・UsedRange(範囲)を使用する。

今回はこの3つの方法について解説します。

 

ワークシート関数COUNTBLANK

結果が出るまでのスピードが超高速です。

1000万個以上の空白セルの個数でも、一瞬で空白個数を取得します(*^^)v

定数で範囲指定

定数ConstのSTARTPOSは範囲の左上のセルを指定

定数ConstのENDPOSは範囲の右下のセルを指定

コピペで即試せます。

解説

変数を宣言します。

ワークシート関数のCountBlank関数を使用して空白セルの個数を求めます。

結果をメッセージボックスに表示で完成です\(^^)/

 

結果

1000万セル以上でも、一瞬で空白個数が表示されます!

すごっ!(((( ;゚Д゚)))ガクガクブルブル

VBA_COUNTIF

エクセルのバージョンよってページ最終行が違うので、ご自身のバージョンに合った最終セル定数ConstのENDPOSの右下のセル)の値をご指定ください。

今回の結果はバージョンがマイクロソフト365の場合の結果です。

 

ForNext(1行の範囲を自動選択する場合)

スピード的には先程のCountBlank関数には劣るものの、1行で下に増えていくデータの範囲を自動で範囲選択して個数を取得する場合に便利に機能します。

ForNextで繰り返し空白セルがあるかIF文で判定して個数を取得します。

データ型のIntegerの3万個くらいのセルを調べたい場合、速さも十分使用できるレベルの速さです。

定数で列番号と行頭番号を指定

定数ConstCOLを指定します。

定数ConstのSTARTROW行頭番号を指定します。

【解説】

変数を宣言します。

データの最終行番号を取得します。

FoNextで繰り返し処理をおこないます。

IF文で空白だったら処理をします。

変数blankCntに、1ずつ値を加算させて合計を算出します。

結果をメッセージボックスに表示して完成です(^o^)o

 

UsedRange(範囲を自動選択する場合)

UsedEangeプロパティを使用してデータ範囲の空白個数を取得する例。

こちらはセル範囲の形式がUsedEangeに合う場合に有効に動作しますが、範囲の形式がそうでない場合は全く機能しないので、その点だけ注意してください。

ForEachでデータ範囲の空白セルをIF文で空白判定をして、変数cntに1ずつ追加してくと空白セルの合計が算出できます。

解説

変数を宣言します。

オブジェクト変数にUsedRangeの範囲をセットします。

ForEachで繰り返し処理を行い、IF文で空白セルだったら処理を実施して、変数cntに1ずつ値を加算させて合計を求めます。

メッセージボックスに空白セルの合計を表示させます。

最後に一応データ範囲をSelectで目視確認して完成です(*^^)v

 

結果

最後にデータ範囲が合ってるか確認します(★‿★)

UsedRange範囲  UsedRange結果

 

まとめ

ワークシート関数のCOUNTBLANK関数を使用すれば超高速で空白個数を取得できるので、1000万セルとか(それ以上も可)、もしある場合はご使用してみてください(^o^)o

以上です。