1/02/2023

Excel。IF関数もつかわずに、手早く締め日から支払日を算出したい。【Closing date】

Excel。IF関数もつかわずに、手早く締め日から支払日を算出したい。

<DATE・YEAR・MONTH・DAY関数>

締め日と支払日。なかなかアレコレ考えて算出する必要があるので面倒だったりします。


締め日と支払日の日にちだけを入力するだけで、支払日を算出できるようにしていきます。


今回は、10日締めの翌20日払いのケースで、紹介していきますが、土日祝日だったら、それをよけるようにするというのは、除いています。


A列には、購入た日が入力されています。

E2には、10日締めなので、「10」と入力しています。

E3には、翌月20日払いなので、「20」と入力しています。


B列の支払日に数式を設定します。

=DATE(YEAR(A2),MONTH(A2)+1+(DAY(A2)>$E$2),$E$3)


締め日が10日より前だから、あとだからといったことを判断させるためのIF関数は使用していません。


20日締めの翌25日払いとかでもE2とE3を変更すれば対応できる数式です。


この数式を説明していきます。


DATE関数は、日付を算出する関数ですね。引数は、年・月・日を設定する必要があります。


引数の年は、YEAR関数を使用して算出します。


引数の月は、MONTH関数を使用することで「月」の数値を算出します。

A2の場合は「7」と算出されます。


そしてこの数式のポイントになるが、「+1+(DAY(A2)>$E$2」。


翌月の払いなので「+1」するのはイメージしやすいと思いますが、7月29日は8月10日に締めて、翌月である「9月」に支払が発生しますので、さらに「+1」する必要があります。


そこで「+(DAY(A2)>$E$2」で判断させています。


「(DAY(A2)>$E$2」のDAY関数は日付を抽出する関数なのでA2の日にちですから「29」と算出されます。


その値がE2である「20」より大きいという条件が成立しているのか、成立していないのかを判断させています。


「29>20」なので、成立しているので「TRUE」という結果になります。


Excelでは、「TRUE」が「1」で「FALSE」が「0」と設定されていますので、さらに「+1」されて、「9」という数値が算出されます。


これにより、月を「9月」とすることができました。


最後の引数の日ですが、20日なので、「E3」を設定します。


TRUEが「1」でFALSEが「0」というのを今まで使用していた数式に組み合わせてみると意外な発見があるかもしれませんね。