DateSerial関数とIIF関数②

Pocket

締日が月末の場合、少し調整が必要です。

月末〆以外の締日の場合と同じように扱うと、月末が30日の場合、締日を31で
集計すると翌月の1日になってしまいます。

2712271
11月1日に31を足すので当たり前といえば当たり前の話です。
つまり、月末締めの場合は別途締日を計算する必要があるのです。

ここで使うのもIIF関数です。
締切日のクエリを次のように変更します。
締切日: IIf([締日]<>31,IIf(Day([納品日])<=[締日],DateSerial(Year([納品日]),Month([納品日]),[締日]),DateSerial(Year([納品日]),Month([納品日])+1,[締日])),DateSerial(Year([納品日]),Month([納品日])+1,0))

少し長くなります。

最初に締日が月末かそうでないかの判断をします。
IIf([締日]<>31
→<>は異なるという意味です。

IIf(Day([納品日])<=[締日],DateSerial(Year([納品日]),Month([納品日]),[締日]),DateSerial(Year([納品日]),Month([納品日])+1,[締日]))
前回の内容です。

締日が月末でない場合の処理
DateSerial(Year([納品日]),Month([納品日])+1,0)
日付の指定が0となっています。0と指定することで、日付が前月の末日を指定します。
ですので、月の指定で、Month([納品日])+1として前月を今月に戻します。
1を足さないと、10月31日になってしまいます。

実行結果です。
2712273

こうやって考えると、月毎に日数が違うって案外面倒です。

================================
今年も有馬記念が終わりました。
今日は馬券買っていれば当たったかなと思いますが、
それもたまたまの話。基本ギャンブル運はないので
毎週馬券買っていたら相当な負けになっているはずだから
たまにはこんな時もあるかなって感じです。
でも有馬記念が終わると本当に今年も終わりだなと
思います。

本日も最後までお読み頂きありがとうございます。