Excelで、期間の初日と末日を指定したときに、その期間に含まれる月の末日を全て求める方法についてです。
- SEQUENCE関数やFILTER関数を利用して、期間中の月の末日をすべて列挙することができます。
手順
B3セルとC3セルにそれぞれ期間の初日と末日が記録されています。
これに対しE3セルに次のような式を入力することで、期間に含まれる月の末日を全て求めています。
ただし日付は数値(シリアル値)となっています。
E3セル
=LET(期間,SEQUENCE(C3-B3+1,1,B3),FILTER(期間,期間=EOMONTH(期間,0)))
「SEQUENCE(C3-B3+1,1,B3)」の部分で期間の初日から末日までのすべての日付(シリアル値)を生成しています。
そしてLET関数を使ってこの部分に「期間」という名前を付けています。
さらにFILTER関数を使い、「期間」中のすべての日付の中から、その日が属する月の末日と一致する日付を抽出しています。結果的に月の末日である日付だけが抽出されます。
ここでは式を少し変えることで横並びにしています。
さらにセルの書式を変更して(関数によるものではない)日付形式で表示しています。
E3セル
=LET(期間,SEQUENCE(1,C3-B3+1,B3),FILTER(期間,期間=EOMONTH(期間,0)))
SEQUENCE関数の第1引数(行数)と第2引数(列数)を入れ替えて「SEQUENCE(1,C3-B3+1,B3)」としただけで、あとは上記の式と同じです。
次の画像では5組の期間を設け、E3セルの式を下方にコピーしています。
年をまたぐようなケースでも問題ないことが確認できます。