目次
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なんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。