之前練習GAS的時候,在YT有分享一段成果小影片,因為只是自己練習的紀錄,沒有特別考慮教學的層面,很開心YT看到網友留言有興趣了解做法,就寫篇教學BLOG分享囉~

ps. 但這個範本有很多手法算是稍微進階一點,如果函數很不熟,直接要做這個練習,會頗吃力,要多花一些時間消化喔~

步驟1 – 做出可變化的活日期 

(1) 做日期=date(A1,I1,1) 翻譯函數=date(抓年份,抓月份,指定1號)

年份和月份不寫死,用抓儲存格資料(A1和I1)的方式,日期就是活的、可變化的

(2) 抓後一天=B3+1,後面的日期都只要把前一欄+1,所以直接往右拉複製成31個,因為一個月最多31日。

▼▼右拉複製函數GIF動圖示範▼▼ 複製=拉儲存格右下角的【實心方塊】

步驟2  – 日期只想呈現日,要隱藏年月。

(1) 選取所有日期快速的做法:先凍結B欄:查看>>凍結>>2欄

▼▼凍結欄位GIF動圖示範▼▼

(2) 點一下B3,按著Shift,再點一下AF3,選擇格式>>數值>>自訂日期和時間,在裡面選只保留日期的格式

▼▼格式>>數值>>自訂日期和時間  GIF動圖示範▼▼

(3) 從最上方點一下B,按著Shift,點一下AF,在其中一處調整欄寬(移動粗藍色框線),即可一次性調整多欄寬度

▼▼批次調整欄寬  GIF動圖示範▼▼

步驟3  – 將星期清單和假日清單設定為命名範圍

(1) 開啟功能面板:資料>>已命名範圍

▼▼位置▼▼

(2) 選擇打好的星期索引清單範圍,按+新增範圍,命名範圍為星期清單>>完成
(假日清單的做法一樣,自己練習囉~)

▼▼製作命名範圍  GIF動圖示範▼▼

步驟4  – 帶出星期的指定文字

從示範檔星期的欄位,會看到很長、看似複雜的函數,像這樣:

=if(B3=“”,“”,vlookup(weekday(B3,2),星期清單,2,0))

遇到很長的函數時,可以【由內而外拆解】,我用顏色標成要拆解的3個部分。

<1>weekday(B3,2)

weekday函數可回傳第一個值(B3)是星期幾,第二個值是星期的換算標準。
1表示把星期日當成每周第一天,所以星期日會回傳1
2表示把星期一當成每周第一天,所以星期一會回傳1,我們用比較直覺的2

<2>vlookup(weekday(B3,2),星期清單,2,0)

得出星期幾的【數字】之後,利用vlookup去已命名範圍的【星期清單】帶出相對應的【國字】(也就是清單中第2欄的一二三四五六日)。

vlookup是有點複雜,但非常非常實用的函數,如果不熟悉語法,可以參考下圖。

 

<3>if(B3=“”,“”,vlookup(weekday(B3,2),星期清單,2,0))

最外層利用if函數修飾畫面,讓日期空白時,就不用找星期。
不熟悉 if 語法的朋友,參考下圖。

步驟5  – 優化日期函數,不出現非當月的日期

(1)取得月份資料 =month(B3)

(2)用if去判斷,若該月份與指定月份不符合時,就不出現日期。(指定月份固定在I1所以要用$鎖定位置$I$1)

(3)將以上2個函數整合成一個=if(month(B3+1)=$I$1,B3+1,“”)

▼▼優化前後的對照  GIF動圖示範▼▼

步驟6  – 帶出國定假日

(1)用vlookup,對照假日清單,找出該日期是否有特殊假日 =vlookup(B3,假日清單,3,0)

(2)沒有找到資料會顯示錯誤,所以外層加上iferror,語法是: =iferror(執行函數,錯誤時””空白)
=iferror(vlookup(B3,假日清單,3,0),“”)

(3)其中【假日清單】是在步驟3就設定好的命名範圍,所以可以直接使用,但這個清單的內容要自己手動維護更新喔!)

▼▼iferror優化前後的對照▼▼

步驟7  – 依指定條件設定不同格式(底色)

(1)要指定條件(ex.補班出現綠底)變化視覺呈現時,使用:格式>>條件式格式設定

(2)設定時注意套用範圍

(3)選擇【自訂公式】去比對目標欄位是否=等於目標內容,如果相等就改變格式,參考下圖說明

▼▼操作位置&設定說明▼▼

以上7個步驟是完成月曆效果的方式,算是小進階的綜合應用了。

至於GAS製作按鈕來調整年份和月份,不是必要的功能,因為年份和月份手動改數字就行,而且GAS是大進階應用,在這裡就暫時不分享了。

希望對雲端月曆效果有興趣的朋友,這篇能給你一點收穫。