我們工作上常運用Excel來製作班表、或月記帳等等…橫向展出一個月份的日期。
對於每個月份要替換時,不但常遇到月尾日期變動(2月有28、29天的問題,或是大小月的問題)…
除了每月一次的手動替換以外,是否有機會能利用函數設定,讓月份自動展開呢?
其實只要能達成要顯示的效果,有很多不同的函數組合~以下僅舉其中的一個例子來說明…
1、如果我們手上有個橫向展開的日期,內容全數手動輸入…能怎麼改善呢?
第一步:[F2欄],修改儲存格格式,用自訂方式,顯示月日即可→畫面簡單化,這個欄位為每張表的起始日,若為當月1日,就輸入7/1即可。
第二步:[G2欄] 將隔天的日期,簡化其顯示格式,單顯示日期即可。同時…讓日期自動+1。並將函數複製到後面日期欄位。
=IF(F2="","",F2+1)
白話文的說法…假如F2是空白,那G2就顯示空白,如果不是空白,那就顯示F2+1天的日期。
- =假加(這個說法,真的結果, 假的結果)…哈哈!若你能以白話文解釋…請相信IF就是這麼回事~~
第三步:[F3欄]星期幾的修改方式,同時請將該設定複製到後面所有星期欄位。
以下是學員原本設定的方式,其實這個方式已經是非常優的設定方式了…應該要給自己一個讚唷~~
=RIGHT(TEXT(F2,"[$-404]aaa;@"))
白話文的說法…假如F2的日期是空白,則星期顯示空白,否則將F2之日期,依星期之顯示方式,取回最右邊的第一個字
- 欄位依 [$-404]aaa;@ 的顯示方式,將會自動將日期顯示為「週一、週二、週三…」這是中文的顯示模式~
- RIGHT(字串,取右邊幾位)
第四步:[AO欄] 再來我們處理最麻煩的每月終止日期…(所以在測試時,最好用7/25日為起始日…因為7、8月都是大月有31天…),請記得要將這個函數複製到日期最後一天喔(AO~AQ)!
因為這張表的設定,以月底為終止日,請自行將欄數留到含大月31日,我們只要控制如果超出該月的範圍,日期不要顯示即可~~
所以我們在AO欄的日期顯示…原本=IF(AN="","",AN2+1)的函數中,再加入一個月份是否相等的判斷~
=IF(AN2="","",IF(MONTH(AN2)=MONTH(AN2+1),AN2+1,""))
IF之中還可再加入IF的判斷,變成多層(槽化)的判斷方式唷~~
白話文的說法…如果AO欄日期的月份等於前一天AN欄日期的月份,則AO欄就顯示,否則不顯示。
第五步:測試一下囉!將起始日修改成不同的日期,您會發現後續的日期及星期,都會自動調整,而終止日也會停在當月份喔!!
- 由於我們日期及星期的判斷,都有先確認要參考的欄位是否為空白,是空白就不顯示,不是空白才來判斷,這樣的方式可以避免沒有日期的錯誤計算結果產生…
好吧!很久沒上課了…也感謝這位學員朋友提出的問題讓大家分享囉!
這封郵件來自 Evernote。Evernote 是您專屬的工作空間,免費下載 Evernote |