如何用Excel制作日歷?
如何用Excel制作日歷?
用Excel制作日期是一個(gè)比較有挑戰的問(wèn)題,這個(gè)問(wèn)題涉及到Excel中多個(gè)函數的應用。下面我就分享一下我制作的日歷,希望有興趣的小伙伴們跟我交流。
首先介紹一下在制作這個(gè)日歷的過(guò)程中,我都使用了哪些Excel工具:
數據驗證:在這里用于制作下拉選擇列表
文本日期轉換數值日期的函數:DATEVALUE
星期函數(weekday)
文本函數:TEXT、LEFT、RIGHT、MID、LEN
條件判斷函數:IF,IFERROR
設置單元格格式--日期格式
設置條件格式
廢話(huà)補多少,進(jìn)入正題。
制作日歷模板和年月列表第一步:畫(huà)一個(gè)如下圖所示的模板,大家可以根據自己的喜好設置格式。
第二步:設置模板中的星期
在顯示“星期”的行輸入序列數字“2,3,4,5,6,7,1”。
選中該區域,調出“設置單元格格式”對話(huà)框--選擇“日期”--選擇“類(lèi)型”為“周三”得到如下效果。
第三步:制作“年”和“月”的下拉列表
如下圖所示,我在L列和M列分別將“年”和“月”列出。
按下圖所示,選中顯示年份的單元格--點(diǎn)擊“數據”選項卡下的“數據驗證”--選擇“允許”為“序列”,來(lái)源為剛剛輸入的年份列表區域--點(diǎn)擊確定。
用同樣的方法設置月份的下拉列表。
最后將年份和月份的列表區隱藏起來(lái)。
根據選擇的“年”、“月”確定當月“1日”是星期幾和最后一天是幾號如下圖所示,在輔助區域分別輸入公式:
公式1:=DATEVALUE(LEFT($C$1,4)"/"MID($D$1,1,LEN($D$1)-1))
公式2:=WEEKDAY($J$4)
公式3:=TEXT(EOMONTH($J$4,0),"d")*1
公式解析:
公式1:
DATEVALUE函數用于將文本格式的日期轉換成數值格式的日期。
LEFT函數:在這里用于從C1單元格的值“2019年”中截取“2019”。
MID函數:在這里用于從D1單元格的值“6月”中截取“6”。
把LEFT函數和MID函數截取的值用“”連接符連接起來(lái)并在中間插入“/”符號,并用DATEVALUE函數轉換成數字類(lèi)型的日期后就得到了如:2019\6\1這樣的日期。
在Excel中如果你只輸入了年和月,并將該單元格的格式設置為日期格式,那么該單元格會(huì )自動(dòng)將該日期指向該月的1號。
公式2:
WEEKDAY($J$4):用于根據J4單元格的日期是星期幾。
公式1和公式2可以嵌套在一起使用。
公式3:
EMOHTH函數:在這里用于根據J4單元格的值確定該月的最后一天是幾號。
TEXT函數:在這里用于從EMONTH函數獲取的值中提取最后的日期。
*1:在這里將TEXT函數的值轉換為數值類(lèi)型。
開(kāi)始日歷的制作經(jīng)過(guò)前面的準備工作后,我么現在可以開(kāi)始日歷的制作了。
第一步:確定當月一號在日歷模板中的位置。
這一步最麻煩,雖然我們已經(jīng)知道了“1號”是星期幾,但我們現在需要在日歷模板中的正確的位置將其顯示出來(lái),這就需要進(jìn)行判斷。
在“周一”對應的A3單元格輸入公式:=IF(A2=$J$5,1,"")。這個(gè)公式是用于判斷“周一”所在的單元格的值與J5單元格的值是不是相等,如果相等則返回“1”(說(shuō)明1號時(shí)星期一),不相等則返回空值。
在“周二”對應的單元格B3輸入公式:=IFERROR(IF(A3"",A3+1,IF(B2=$J$5,1,"")),"")。這個(gè)公式首先判斷A3單元格是不是1,如果是1則返回A3的值“+1”;如果A3單元格的值不是“1”,則返回公式:IF(B2=$J$5,1,"")(這個(gè)公式的判斷方式與A3單元格的公式一樣)的返回值。
IFERROR函數的作用是當IF函數的返回值是錯誤值時(shí),保證返回的是空值。
設置好單元格的引用方式,然后將B3單元格的公式向后拖動(dòng)的G3(周日)單元格。
第二步:利用公式生成后續日期
如下圖所示,在A(yíng)4單元格里輸入公式:=G3+1,在B4單元格里輸入公式:A4+1,這兩個(gè)公式應該很好理解,及不做解釋了。
將A4單元格的公式向下拖動(dòng),將B4單元格的公式向右拖動(dòng)然后再向下拖動(dòng)填充。
第三步:把錯誤的日期清理掉
如上圖所示,6月份只有30天,而上圖中卻顯示到了“37”,所以需要將多出來(lái)的部分給清理掉。
我們將后面兩行的公式進(jìn)行修改:
在A(yíng)7單元格輸入公式:=IFERROR(IF((G6+1)$J$6,"",(G6+1)),""),向下拖動(dòng)填充。
這個(gè)公式用于判斷"G6+1"的值是否大于“J6”單元格的值(當月的最后一天),如果大于"J6"的值則返回空值,如果不大于則返回“G6+1”。
在B7單元格輸入公式:=IFERROR(IF((A7+1)$J$6,"",(A7+1)),""),向右向下拖動(dòng)填充。這個(gè)公式的判斷原理跟上一個(gè)公式一樣。
設置完成后,就不會(huì )再顯示大于當月最后一天的日期了。
將當天的日期突出顯示如下圖所示,選中模板中的數值區域,點(diǎn)擊“開(kāi)始”選項卡下的“條件格式”按鈕,在彈出的下拉菜單中選擇“新建規則”。
在彈出的“新建規則”對話(huà)框中選擇“使用公式確定要設置格式的單元格”。
在下面的輸入區輸入公式:=DATEVALUE(LEFT($C$1,4)"/"MID($D$1,1,LEN($D$1)-1)"/"A3)=TODAY(),這個(gè)公式用于判斷模板中的日期與TODAY函數的值是否相等。
點(diǎn)擊格式,根據需要設置格式的樣式,后點(diǎn)擊確定。
好啦,我的日歷表基本制作步驟就是這樣,小伙伴們可以根據自己的喜好對表格的樣式進(jìn)行設置,最好對表格中的進(jìn)行保護設置,以免別人不小心把你辛苦設置的公式給弄沒(méi)了。
我是Exce大白,歡迎大家跟我交流Excel的使用技巧和心得。