今回最終的に作った関数はこのような形です。
=ARRAYFORMULA(countif(B:B,D2:INDIRECT("D"&COUNTA(D2:D))))
STEP1〜8に分解して書いていきます。
STEP1
以下のようにA列に日付の入ったデータがあってSTEP2
B2に7文字目までの年/月を取得するLEFT関数を入れて
=LEFT(A2,7)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgjzf5Er5P9Hq-lMqoVCyQyAwoMMkTTqwnoCko79gapkeSwm2VrkEyXhQvA5F7hnaToPnM-KZ9nvi0D9pM5Zv0Tk2Yuw0zDmFSjQJpUdZL49JIzIVtVBCfxPEXj_blvZcipJXxbtAasuc/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-05-28+8.24.47.png)
STEP3
ARRAYFORMULA関数で以降の行にも反映させる
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgjzf5Er5P9Hq-lMqoVCyQyAwoMMkTTqwnoCko79gapkeSwm2VrkEyXhQvA5F7hnaToPnM-KZ9nvi0D9pM5Zv0Tk2Yuw0zDmFSjQJpUdZL49JIzIVtVBCfxPEXj_blvZcipJXxbtAasuc/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-05-28+8.24.47.png)
STEP3
ARRAYFORMULA関数で以降の行にも反映させる
=ARRAYFORMULA(LEFT(A2:A,7))
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJkyf5ZnKx7igrj1gy3ljCzp_dyPU95ZwRiO6kM2uhYtXGVQI3yTS9w1t6VjV0GuYkVO98upxSq_j3ncTD2_QsYriCYrmtCK65LuaieMCb1zMYSYyuB2z6UrLQR5v3qo7bTSrr_iZEXg/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-05-28+8.26.16.png)
ここまでならこれでOK。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBJkyf5ZnKx7igrj1gy3ljCzp_dyPU95ZwRiO6kM2uhYtXGVQI3yTS9w1t6VjV0GuYkVO98upxSq_j3ncTD2_QsYriCYrmtCK65LuaieMCb1zMYSYyuB2z6UrLQR5v3qo7bTSrr_iZEXg/s320/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2020-05-28+8.26.16.png)
ここまでならこれでOK。
問題はここからで
STEP4
D1に年/月の分類をするためにUNIQUE関数を入れて
=unique(B:B)
STEP5
E2に年/月の件数を計算するCOUNTIF関数を入れて
E2に年/月の件数を計算するCOUNTIF関数を入れて
=countif(B:B,D2)
参考
STEP6
ARRAYFORMULA関数で展開すると
E4以降に不要な値が入ってしまう…
=ARRAYFORMULA(countif(B:B,D2:D))
STEP7
これを避けるために
「D列で値が入っている行まで」を範囲指定したい
=ARRAYFORMULA(countif(B:B,D2:D3))
A, B, D列のデータ、行数が変わらなければこれでOK
STEP8
A, B, D列のデータ、行数が変わる場合は
その都度範囲指定をしなくて良いように
INDIRECT関数とCOUNTA関数を入れる
これで今回作りたかった関数は完成しました。
参考
LEFT
ARRAYFORMULA
UNIQUE
COUNTIF
INDIRECT
COUNTA