同じ月が何件あるかカウントする(配列でまとめて簡単に指定)

同列に日付のデータがあるときに、日は異なるが同月だったら何件あるか数えたい、といった場合。
COUNTIFSがよく使われますが、文字列だった場合は検索文字を1回指定すれば良いので楽ですが、日時の場合は「○日以上○日以下」と2回指定する必要があり面倒です。

これを簡単にまとめて計算する方法を試してみましょう。

0326

例えば上図のようなA列の日付を月ごとにカウントしてみます。
C列には数字のみ入れて、セルの書式設定で「月」を表示するようにしておきます。

これをCOUNTIFS関数で計算した場合は、以下のようになります。
D1に式を入力。

=COUNTIFS($A$1:$A$11,">=2017/1/1",$A$1:$A$11,"<=2017/1/31")

さらに2月、3月・・・と計算したい場合にはいちいち日時を入力しなければいけないので非常に面倒です。
セルを指定するにしても作業列が必要となり手間がかかります。

これを配列にしてしまえば式は一度入力するだけで、オートフィルコピーも簡単に行うことができます。
以下のようにD1に入力し、「Ctrl+Shift+Enter」で確定。

=SUM(IF(($A$1:$A$11)<>"",(MONTH($A$1:$A$11)=C1)*1))

式の前後には「{}」が付きます。
これを下方へオートフィルコピーすれば出来上がりです。

この式は、
MONTHで月を取り出してます。
取り出した月が指定したセルの数字と一致していれば「1」となるので、これを最後にSUMで合計すると件数が出る、ということです。

また空白があった場合は「1」と計算してしまうため、空白の処理もしておきます。