「20日締め」の取引先がある事務では、10月21日の売上は「11月分」、10月20日の売上は「10月分」に入れます。これを日付を見ながら手で振り分けていると、月末にずれが出やすくなります。今回は、日付から「何日締めの何月分か」を1つの式で出す方法を紹介します。
■ 式はこれだけ
A列に日付があるとして、隣の列に次の式を入れます。
=EOMONTH(A2-20,0)+20
答えは「その日付が入る締め日」です(セルの表示形式を日付にしてください)。
- 10月20日 → 10月20日(10月分)
- 10月21日 → 11月20日(11月分)
- 11月5日 → 11月20日(11月分)
- 12月25日 → 翌年1月20日(翌年1月分)
■ なぜこれで締め日になるのか
考え方は「日付から20日を引いて、その月の月末に20日を足す」です。
10月21日から20日引くと10月1日。その月末は10月31日。20日足すと11月20日になります。
10月20日から20日引くと9月30日。月末は9月30日のまま。20日足すと10月20日です。
EOMONTH(日付,0) は「その日付の月の月末」を返す関数です。年をまたぐ12月下旬も、翌年の1月20日になります。
■ 「何月分」と表示したいとき
締め日の列(C列とします)があれば、
=YEAR(C2)&"年"&MONTH(C2)&"月分"
で「2026年11月分」のように出せます。
■ 締め月ごとに合計する
締め日の列ができれば、SUMIFS で締め月ごとに合計できます。
=SUMIFS(B2:B7,C2:C7,G2)
G2 に「2026/11/20」と入れておけば、11月20日締めの合計になります。
25日締めなら、式の 20 を 25 に変えるだけです(=EOMONTH(A2-25,0)+25)。
■ 気をつけること
1. 締め日が29日〜31日のときは、この形では使えません。2月に29日・30日・31日が無いためです。月末締めなら =EOMONTH(A2,0) をそのまま使います
2. 日付が「文字」で入っていると計算できません。書き出したデータで答えがエラーになるときは、日付が文字になっていないかを先に確かめてください
■ 確かめたこと
今回の式は、Python の計算ライブラリ(formulas)で見本のファイルを作って計算させ、上の日付の例(10月20日・10月21日・11月5日・12月25日・3月1日・10月1日)がすべて手で数えた締め日と同じになること、SUMIFS で 11月20日締めが 5,000円、10月20日締めが 7,000円になることを確かめました。Excel や Google スプレッドシートの画面そのものでは確かめていないので、お使いのファイルで数行だけ試してから全体に広げてください。
■ おわりに
締め日の振り分けは、1列足すだけで手作業がなくなります。日付の扱いで迷う式づくりを1つだけ頼みたい方向けに、「スプレッドシート関数・GASを1つお作りします」という出品をしています。動かして確かめてからお渡しします。
※この記事は、生成AI(Claude)を使って下書きし、式は手元で計算して確かめてから公開しています。