EXCEL VBAやPHP、Query、Ajaxに関するWINDOWS・WEBプログラミングの解説ブログです。

COUNTIF関数をVBAで、条件に合致する行数を取得、10分コピペで関数・VBAセット学習

COUNTIF関数をVBAで、条件に合致する行数を取得




COUNTIF関数は、検索条件に合致したセル数がいくつあるかを取得できる関数です。
前半は、COUNTIF関数の使い方を解説します。
後半は、COUNTIF関数をVBAで表現します。
VBAを触ったことが無い方でもこの記事だけで再現できるようにしています。

具体的な例題として、
こちらの売上表の 「焼き鮭おにぎり」だけの注文回数と
と「ツナマヨおにぎり」「焼き鮭おにぎり」両方の注文回数を取得します。

「焼き鮭おにぎり」だけの注文回数を取得するには、次のように入力します。
=COUNTIF(A3:A12,”焼き鮭おにぎり”)
COUNTIF(範囲,検索条件)
A3:A12が範囲、”焼き鮭おにぎり”が検索条件になるので、範囲の中で焼き鮭おにぎり に一致するセルの数が3ということになります。

A3:A12を選択した状態でF4キーをクリックしますと、$記号がセルの行と列番号の頭につきます。
これは、コピーして他のセルに貼り付けても、参照範囲が変更されることがありません。

次に「ツナマヨおにぎり」「焼き鮭おにぎり」両方の注文回数を取得します。

「ツナマヨおにぎり」「焼き鮭おにぎり」両方の注文回数を取得するということは、「おにぎり」という文字列が含まれているセルの数を取得すればよいことになります。
D 14セルをコピーして、D15にペーストし、焼き鮭を*アスタリスクに書き換えます。
*アスタリスクはワイルドカードといって、おにぎりの前に0文字以上のどんな文字がついていても、マッチさせてくれるものです。
末尾におにぎりがつくセルの数5を取得することができました。
次に、VBAで COUNTIF関数を表現します。

VBAで COUNTIF関数を表現

キーボードのAltキーを押しながらF11キーを押してください。VBAのエディターが起動します。
もし、VBAのエディターが最大表示されていたら、右上の縮小をクリックして、縮小し、シートと並べて表示することをお薦めします。挿入、標準モジュールをクリックしてください。
Module1上にプログラムコードを記載していきます。

売上表内「焼き鮭おにぎり」に合致するセルの数を取得するには、次のように書きます。

変数を二つ宣言します。
iは、売上表内の行番号を格納します。
numは、条件に一致するセルがあれば1づつ加算される変数です。
numは、最初0を設定しておきます。
もし、エディターが非表示になったら、Altキーを押しながらF11キーを押せば、表示されます。
3行目から12行目の1列目が “焼き鮭おにぎり” に合致していたら、numが1づつ加算されます。
最後に 14行目の4列目のセルに numの値を格納し、3と表示されます。

右三角ボタンを押して、プログラムを実行します。
「焼き鮭おにぎり」に合致する行数3を取得できています。

次に、「ツナマヨおにぎり」「焼き鮭おにぎり」両方の注文回数を取得します。「おにぎり」という文字列が含まれているセルの数を取得すればよいことになります。次のように書きます。

おにぎりの前に0文字以上のどんな文字がついていても、マッチさせるには、LIKE演算子を使います。
15行目の4列目のセルに numの値を格納し、5と表示されるのが確認できました。

VBAを有効にしたエクセルファイルを保存するときは、ファイル、名前を付けて保存、Excelマクロ有効ブック(*.xlsm)を選択し、好きなファイル名で保存してください。

ご拝読ありがとうございました。