- COUNTIF(S)関数で条件に日付を指定するときは、条件とする日付を「" "」(ダブルクォーテーション)で囲みます。
- 2つの日付の間に含まれる日付をカウントする場合はCOUNTIFS関数を用いるのが適当です。
- YEAR関数などと併用すれば特定の年・月・曜日に属する日付をカウントできます。
特定の日付をカウントする方法
最も基本的な例です。
画像ではD3セルに式を入力して、B列の日付のうち「2023/3/9」であるものをカウントしています。
D3セル
=COUNTIF(B3:B11,"2023/3/9")
条件として日付を指定する場合は、このように「" "」(ダブルクォーテーション)で囲みます。
囲まないと「2023割る3割る9」という計算式(=74.925…)とみなされるのでどの日付にも該当せず、結果は「0」になってしまいます。
なお、「2023-3-9」のように別の書式で記録された(見た目が異なる)日付であってもきちんとカウントされます。
こちらではD3セルに入っている日付を参照して条件にしています。
E3セル
=COUNTIF(B3:B11,D3)
このように、セルに入っている日付を参照して条件にする場合は「" "」で囲まなくていいです。
特定の日付以降(以前)の日付をカウントする方法
ここでは「2023/3/9以降(当日を含む)」の日付をカウントしています。
D3セル
=COUNTIF(B3:B11,">=2023/3/9")
このように比較演算子「>=」を「" "」の中に含めて記入します。
比較演算子を「<=」にすれば「2023/3/9以前(当日含む)」、「>」にすれば「2023/3/9より後」、「<」にすれば「2023/3/9より前」という条件になります。
こちらはD3セルに入っている日付以降の日付をカウントする例です。
E3セル
=COUNTIF(B3:B11,">="&D3)
比較演算子「>=」は「" "」で囲みますが、セル番地の「D3」は囲みません。そして両者を「&」でつなぐ必要があります。
期間内(2つの日付の間)の日付をカウントする方法
ここでは「2023/3/9」から「2023/3/19」までの間に含まれる日付をカウントしています。
D3セル
=COUNTIFS(B3:B11,">=2023/3/9",B3:B11,"<=2023/3/19")
COUNTIFS関数を使って「2023/3/9以降」かつ「2023/3/19以前」という2つの条件を満たす値をカウントしています。
後述するようにCOUNTIF関数の第1引数(範囲)で関数が使えるので、ISBETWEEN関数などと併用すればCOUNTIF関数でも済むのではないかと思われますが、(実際できるものの)日付の指定が複雑になるため非常にめんどくさい式になります。
特定の年・月・曜日の日付をカウントする方法
次の画像では日付のうち2023年のものをカウントしています。
D3セル
=COUNTIF(ARRAYFORMULA(YEAR(B3:B11)),2023)
GoogleスプレッドシートのCOUNTIF関数の第1引数(COUNTIFSの場合は奇数番目の引数)では関数が使えるので、カウント対象の値を変換しておくことができます(Excelではできない)。
そこでYEAR関数を使って日付を「年」の値に変換してカウントしています。一括変換するためARRAYFORMULAが必要になり、ちょっと長くなるのが痛いところです。
COUNTIFSを使って2023/1/1~2023/12/31の日付をカウントしても同じですが、条件を1つの数値だけで指定できるのがメリットです。
次の画像では3月の日付だけをカウントしています。
D3セル
=COUNTIF(ARRAYFORMULA(MONTH(B3:B11)),3)
MONTH関数で日付を「月」の値に変換してカウントしています。
ただしこのやり方だと、何年の3月でも区別せずカウントされます。
そこで、次の画像は「年月」でカウントする例です。
D3セル
=COUNTIF(ARRAYFORMULA(TEXT(B3:B11,"yyyymm")),"202303")
TEXT関数で日付を「yyyymm」形式の文字列に変換しておき、文字列で年月を指定しています。
最後に曜日でカウントする例です。
次の画像では日曜日の日付をカウントしています。
D3セル
=COUNTIF(ARRAYFORMULA(TEXT(B3:B11,"ddd")),"日")
TEXT関数で日付を1文字の曜日(日,月,火……)に変換し、条件を1文字で指定しています。