「データが記入されているセルの個数を数えたい。」
「その中でも、ある文字(数字)が記入されているセルの個数を数えたい。」
「何も記入されていないセルの個数を数えたい。」
この記事ではこんな悩みを一瞬で解決します。
エクセルにはもともと、
■空白ではないすべてのセルの個数を数える(COUNTA関数)
■数字が入っているセルの個数を数える(COUNT関数)
■指定した文字(数字)と一致するセルの個数を数える(COUNTIF関数)
■指定領域にある空白のセルの個数を数える(COUNTBLANK関数)
これらの関数があらかじめ備わっています。
この記事では、
〇セルの数を数える4つの関数の使いかた説明
〇それらの関数をVBAで使用する方法
についてご紹介していきます。
初心者に寄り添い、画像多めで説明していきますので、ぜひ最後までごらんください。
はじめに
まずはじめにこの記事で扱う題材についてご紹介します。
今回は以下のように、A列に文字が、B列に数字が入っています。
これらの文字と数字が混在する領域の中から、冒頭に紹介した関数を使って、セルの個数を数えていきます。
ぜひあなたもエクセルを開き、一緒に練習してみましょう。
それでは本題に入っていきます。
(空白ではない)すべてのセルを数える!COUNTA関数
まずはじめに、指定した領域内にある、空白ではないすべてのセルを数える方法についてご紹介します。
基本的な使い方は以下の通りです。
=COUNTA(【数えたい領域】)
実際の使用例は以下の画像のようになります。
しっかりと =COUNTA(数えたい領域) という形になっていますね。
また、この関数を使用した結果は20となっており、A列とB列それぞれに10個ずつはいっているデータの個数をすべて数えてくれていることがわかると思います。
ここまでが、すべてのセルの個数を数えるCOUNTA関数でした。
数字のセルだけを数える!COUNT関数
次は、指定した領域内にある、数字が記入されているセルだけを数える方法についてご紹介します。
基本的な使い方は以下の通りです。
=COUNT(【数えたい領域】)
実際の使用例は以下の画像のようになります。
※先ほどのCOUNTA関数から最後のAを取り除いただけですね。
この関数を使用した結果は10となっており、数字が記入されているB列のデータだけを数えてくれていることがわかると思います。
※ちなみに文字のセルだけを数えたい場合は、COUNTA関数からCOUNT関数の結果を引いてあげればいいですね。
ここまでが、すべてのセルの個数を数えるCOUNTA関数でした。
指定した文字と一致するセルを数える!COUNTIF関数
次は、指定した領域内で、設定した条件に当てはまっているセルだけを数える方法についてご紹介します。
基本的な使い方は以下の通りです。
=COUNTIF(【数えたい領域】,【指定したい文字(数字)】)
実際の使用例は以下の画像のようになります。
まずは文字を指定する場合です。今回は a という文字を数えてみます。
文字を指定する場合は、以下のように ” で指定したい文字を挟んであげます。
また、数字を指定したい場合の使い方は以下のようになります。
数字の場合はそのまま指定したい数字を記入すればOKです。
ここでは 1 が記入されているセルを数えています。
A列、B列には a という文字も 1 という数字もそれぞれ2回登場していますので、きちんとこれらの関数の使用結果は2になっていますね。
ここまでが、すべてのセルの個数を数えるCOUNTIF関数でした。
空白のセルを数える!COUNTBLANK関数
最後は指定した領域内に存在する空白のセルを数える方法についてです。
基本的な使い方は以下の通りです。
=COUNTBLANK(【数えたい領域】)
実際の使用例は以下の画像のようになります。
今回指定した領域の中には空白セルは含まれておりませんので、結果はゼロになってくれていますね。
上の3つに比べると使用頻度は高くないと思いますが、念のため覚えておきましょう。
というわけでセルの数を数える方法4つをご紹介しました。
VBAへの組み込み方法
最後にこれらの関数をVBA上で使用する方法についてご紹介していきます。
早速ですが、以下がここまでにやってきたことと全く同じことを再現するVBAコードです。
Sub count_cells()
'空白ではないすべてのセルを数える
Cells(1, 3) = WorksheetFunction.CountA(Range(Cells(1, 1), Cells(10, 2)))
'数字が入っているセルだけを数える
Cells(1, 4) = WorksheetFunction.Count(Range(Cells(1, 1), Cells(10, 2)))
'指定した文字と一致するセルだけを数える
'文字指定の場合
Cells(1, 5) = WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(10, 2)), "a")
'数値指定の場合
Cells(1, 5) = WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(10, 2)), 1)
'空白のセルだけを数える
Cells(1, 6) = WorksheetFunction.CountBlank(Range(Cells(1, 1), Cells(10, 2)))
End Sub
基本的には=WorksheetFunction.をそれぞれの関数の前につけ、その後ろに数えたい領域を指定してあげているだけですね。
※VBAでの領域指定方法がわからないという方は以下の記事を参考にしてみてください。
このコードを実行すると以下のような結果が得られており、前半に紹介した内容と完全に一致していることがわかると思います。
非常に簡単ですので、ぜひ覚えておきましょう。
※ただしこの場合、セル内部は数字のみになっており、数式は残りませんので、ご注意ください。
おわりに
というわけで今回はセルの数を数える方法4つをご紹介していきました。
似たような関数で覚えにくいとは思いますが、知っておくと便利なことが多いので、ぜひこのスキルをマスターしておきましょう!
このように、このブログでは、エクセル(VBA)を中心に、様々な業務効率化スキルを紹介しています。
■業務の生産性を上げたい。
■早く帰って子供と遊びたい。
こんな人はぜひ他の記事も読んでみてください。
また、VBAを使ってこんなことがしたいんだけど、やり方がわからない、という悩みを抱えているかたは、お気軽にコメント欄から質問してください。
私にわかる範囲であればご協力いたしますので。(もちろん無料です。)
最後に・・・
このブログを応援してあげても良いよ、という方は以下のボタンをポチっていただけると嬉しいです。
Twitterもやっていますので、興味があれば覗いてみてください。
それではまた!!
コメント