忍者ブログ

sign関数を使って、if文を使わずに年度や期を計算する方法

2022年08月16日
ファイル一覧を出力するツールを公開する前に、
その中で使っている小ネタを先に紹介。

今回は、年度や期の計算について。


当たり前だけど、2022年度は2022年4月1日~2023年3月31日。
会社の期は、創立記念が1983年だったら、年度から1982年を引けばいい。

if文を使って、month(date) < 4 ならば、年から1を減算すればいいけど
ここはスマートにいきたいところ。

入社して10年くらい悩んでいたけど、最近やっと閃いた。





符号関数signを使えばいいんだ!

sign関数は、数値が正なら+1、負なら-1、0なら0を返す。

なので、sing(month(date) - 3.5) とすれば、
①month(date) < 4 ならば-1、②month(date) >= 4 ならば+1を返す。

[sign{month(date) - 3.5} -1 ]/2に変形すると
①month(date) < 4 ならば-1、②month(date) >= 4 ならば0を返すので、これを年に足せばOK。


sign関数は、論理式の演算でも便利なのでご活用を!


以下、計算例。
C5 = 2022/3/16として、
D5 = (sign{month(C5) - 3.5} -1 )/2 → (sing{-0.5}-1)/2 → (-1-1)/2 → -1
E5 = Year(C5)+D5 (年度計算)
F5 = E5 - 1982(期)

C6 = 2022/4/16として、
D6 = (sign{month(C6) - 3.5} -1 )/2 → (sing{0.5}-1)/2 → (1-1)/2 → 0
E6 = Year(C6)+D6
F6 = E6 - 1982(期)



PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字