目次
COUNTIFS関数をVBAで実行
こんにちは。伊川(@naonaoke)です。
以前、上の記事で、COUNTIF関数をVBAで実行しました。
今回は、COUNTIFS関数をワークシート関数と、VBAで実行してみます。
ループを2回使うだけです。
問題提起
(株)IKAWAの柄久 瀬瑠子(エク セルコ)は、下記のような依頼を上司から受けました
複数の条件で、データをカウントする方法を教えてほしい。
上司に、どのようにして説明すればいいだろうか?
解決策

COUNTIFS関数は、複数条件でカウントすることを紹介する
COUNTIFSをワークシート関数で実行
作業手順その1 データベースを確認

上の図のようなデータベースがあるとします。
札幌にモーツアルトが何人いるか確認します。
最初に、ワークシート関数で実行します。

最初に上の図のようなクロス集計の表を作成しおきます。
作業手順その2 数式を仕込む

セルB2を選択して、関数のダイアログを表示させて、COUNTIFSを選択します。

ここは、名というシートのA列です。

上の図のように、ダーっと選択します。

可愛く選択する場所は、クロス集計表の、地名を1個だけ選択します。

このCOUNTIFS関数のポイントは、クロス集計表の、縦列(名前)がずれると、数式が反応しません。
必ず、アルファベットの向かって右側に$マークをつけてください。

地名を選択しましたので、次は名前を選択します。
ダーっ選択して、可愛く選択します。

ダイアログの完成形です。これで出来上がりです。

表示されました。
あとは、セルB2をクロス集計表に全部コピーします。

COUNTIFSをVBAで実行
作業手順その1 VBAのコードを仕込む
コード自体は簡単なのですが、ループを2つ使います。


結果は同じになりました。
ここがポイント

集計業務に関しては、このCOUNTIFSではなく
maxRow2 = Cells(Rows.Count, “A”).End(xlUp).Row
maxColumns = Cells(1, Columns.Count).End(xlToLeft).Column
一番端までという書き方が理解できれば、縦横無尽の集計が可能になります。
まとめ

今回は、ループを2回使って、COUNTIFSを実行しました。VBAの最初の壁は、ループで挫折します。何度も、ループのコードをコピペして練習しましょう。
今回のサンプルファイルは、No65です。

わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。















