Excelやスプレッドシートで一定範囲の日付をカウントしたい時。

2022/10/14に公開

COUNTIF関数

日付を数えたい時、
時間の累計ではなく数を数えたいので COUNTIF関数を使います。

一例

=COUNTIF(範囲, 条件)
=COUNTIF($A$1:$A$1000, ">="&B1)
範囲に関しては$マークで固定するのが推奨です。

上記を日本語にすると
A1:A1000の範囲の中にB1セルの値よりも大きいものをカウントする
という表現になります。
ある日付以降をカウントしたい場合はこれだけで済みます。
yyyy/MM/dd hh:mm 形式でもちゃんと数えてくれます。
例のB1の表記は yyyy/MM/ddのみの表記でもうまいこと計算してくれます。
しかしその際に注意が必要な部分があるので次項に一緒に記載します。

COUNTIFS関数

COUNTIFで条件に当てはまる期間の件数を数えることが出来ました。
しかし、COUNTIF関数だと条件を1つしか指定できないので、
ある期間を数える場合は不十分です。
そこで、COUNTIFS関数を使います。

表記としては

COUNTIFS(範囲, 条件, [範囲, 条件])

のように記述します。

一例

=COUNTIFS($A$1:$A$1000, ">="&B1, $A$1:$A$1000, "<="&B2)

これで
B1の日付から、B2の日付までに
当てはまる日付のセルをカウントしてくれる。

応用

例えばB1が2022/10/01になっていて、
ありがちな、その月末までの期間のセルをカウントしたい時、
EOMONTH関数を使うと
月末の日付を計算してくれます。
EOMONTH(セル, 何ヶ月後か)
2つ目の引数に0を入れると当月の月末になります。

=EOMONTH(B1, 0)
これは
2022/10/31になります。

なので、

=COUNTIFS($A$1:$A$1000, ">="&B1, $A$1:$A$1000, "<="&EOMONTH(B1,0))

このように指定すると、
B1から月末までの日付データをカウントしてくれます。


余談

更に、シートが別の場合は、
INDIRECT関数を使うことで別セルに書かれたシート名を含めて
使用することも可能です。
1つのエクセルにデータを集めたいときには便利なので、
使ってみてください。
以下、例。

B4にシート名が書かれてて、そのシートのA列に日時のセルの列があり、
該当シートのA6に基準にしたい日付のセルがある場合のCOUNTIFS関数を組むと、
このようになります。
=COUNTIFS(INDIRECT("'"&B$4&"'!A1:A1000"),">="&$A6,INDIRECT("'"&B$4&"'!A1:A1000"),"<="&EOMONTH($A6,0)+1)

Discussion