返回列表 上一主題 發帖

[發問] 發薪日 逢六日遞延

[發問] 發薪日 逢六日遞延

本帖最後由 carzyindex 於 2011-3-2 17:43 編輯

公司發薪日為每月的18號

逢六日就延到星期一

請問函數該怎麼設定佔用的儲存格越少

感覺這問題滿常見的  

20110318
20110218
20110118
20101220
20101118
20101018
20100920
20100818
20100719
20100618
20100518
20100419
20100318

自己的做法滿慘的

2011/3/18
2011/2/18
2011/1/18
2010/12/18
2010/11/18
2010/10/18
2010/9/18
2010/8/18
2010/7/18
2010/6/18
2010/5/18
2010/4/18
2010/3/18
先用weekday判斷星期幾如果星期六+2星期日+1
跪求簡化

本帖最後由 ANGELA 於 2011-3-2 22:29 編輯

用WEEKDAY 或用MOD 都一樣要用IF 去判斷,如果不增加欄位,就要用VBA去判斷18日是否為週末再直接把18日修改為下一個星期一的日期.
否則用長公式
=IF(MOD(DATE(YEAR(TODAY()),MONTH(TODAY()),18),7)=0,DATE(YEAR(TODAY()),MONTH(TODAY()),20),IF(MOD(DATE(YEAR(TODAY()),MONTH(TODAY()),18),7)=1,DATE(YEAR(TODAY()),MONTH(TODAY()),19),DATE(YEAR(TODAY()),MONTH(TODAY()),18)))

TOP

回復 2# ANGELA


    原來公式是這樣用的,真不是普通的短啊

TOP

a1輸入2011/3/18
a2=EDATE(DATE(YEAR(A1),MONTH(A1),18),-1)+CHOOSE(WEEKDAY(EDATE(DATE(YEAR(A1),MONTH(A1),18),-1),2),0,0,0,0,0,2,1)
往下拉

TOP

回復 4# oobird


    choose這個函數幾乎被遺忘了,真管用,謝謝指導.

TOP

=DATE(2011,ROW(),18)+MID("0000012",WEEKDAY(DATE(2011,ROW(),18)),1)
知之為知之,不知為不知,誠實也!

TOP

本帖最後由 ANGELA 於 2011-3-4 08:24 編輯

=DATE(2011,ROW(),18)+MID("0000021",WEEKDAY(DATE(2011,ROW(),18)),1)
龔兄也是我的啟蒙老師,謝謝長久來的教導,mid函也用的妙

TOP

=DATE(2011,ROW(),18)+MID("0000021",WEEKDAY(DATE(2011,ROW(),18)),1)
MID這招太強了
不是一般人會想到的
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題