回覆列表
  • 1 # Excel大白

    如何用Excel製作日曆?

    用Excel製作日期是一個比較有挑戰的問題,這個問題涉及到Excel中多個函式的應用。下面我就分享一下我製作的日曆,希望有興趣的小夥伴們跟我交流。

    首先介紹一下在製作這個日曆的過程中,我都使用了哪些Excel工具:

    資料驗證:在這裡用於製作下拉選擇列表

    文字日期轉換數值日期的函式:DATEVALUE

    星期函式(weekday)

    文字函式:TEXT、LEFT、RIGHT、MID、LEN

    條件判斷函式:IF,IFERROR

    設定單元格格式--日期格式

    設定條件格式

    廢話補多少,進入正題。

    製作日曆模板和年月列表

    第一步:畫一個如下圖所示的模板,大家可以根據自己的喜好設定格式。

    第二步:設定模板中的星期

    在顯示“星期”的行輸入序列數字“2,3,4,5,6,7,1”。

    選中該區域,調出“設定單元格格式”對話方塊--選擇“日期”--選擇“型別”為“週三”得到如下效果。

    第三步:製作“年”和“月”的下拉列表

    如下圖所示,我在L列和M列分別將“年”和“月”列出。

    用同樣的方法設定月份的下拉列表。

    最後將年份和月份的列表區隱藏起來。

    根據選擇的“年”、“月”確定當月“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函式擷取的值用“&”連線符連線起來並在中間插入“/”符號,並用DATEVALUE函式轉換成數字型別的日期後就得到了如:2019\6\1這樣的日期。

    在Excel中如果你只輸入了年和月,並將該單元格的格式設定為日期格式,那麼該單元格會自動將該日期指向該月的1號。

    公式2:

    WEEKDAY($J$4):用於根據J4單元格的日期是星期幾。

    公式1和公式2可以巢狀在一起使用。

    公式3:

    EMOHTH函式:在這裡用於根據J4單元格的值確定該月的最後一天是幾號。

    TEXT函式:在這裡用於從EMONTH函式獲取的值中提取最後的日期。

    *1:在這裡將TEXT函式的值轉換為數值型別。

    開始日曆的製作

    經過前面的準備工作後,我麼現在可以開始日曆的製作了。

    第一步:確定當月一號在日曆模板中的位置。

    這一步最麻煩,雖然我們已經知道了“1號”是星期幾,但我們現在需要在日曆模板中的正確的位置將其顯示出來,這就需要進行判斷。

    在“週一”對應的A3單元格輸入公式:=IF(A2=$J$5,1,"")。這個公式是用於判斷“週一”所在的單元格的值與J5單元格的值是不是相等,如果相等則返回“1”(說明1號時星期一),不相等則返回空值。

    在“週二”對應的單元格B3輸入公式:=IFERROR(IF(A3<>"",A3+1,IF(B2=$J$5,1,"")),"")。這個公式首先判斷A3單元格是不是1,如果是1則返回A3的值“+1”;如果A3單元格的值不是“1”,則返回公式:IF(B2=$J$5,1,"")(這個公式的判斷方式與A3單元格的公式一樣)的返回值。

    IFERROR函式的作用是當IF函式的返回值是錯誤值時,保證返回的是空值。

    設定好單元格的引用方式,然後將B3單元格的公式向後拖動的G3(週日)單元格。

    第二步:利用公式生成後續日期

    如下圖所示,在A4單元格里輸入公式:=G3+1,在B4單元格里輸入公式:A4+1,這兩個公式應該很好理解,及不做解釋了。

    將A4單元格的公式向下拖動,將B4單元格的公式向右拖動然後再向下拖動填充。

    第三步:把錯誤的日期清理掉

    如上圖所示,6月份只有30天,而上圖中卻顯示到了“37”,所以需要將多出來的部分給清理掉。

    我們將後面兩行的公式進行修改:

    在A7單元格輸入公式:=IFERROR(IF((G6+1)>$J$6,"",(G6+1)),""),向下拖動填充。

    這個公式用於判斷"G6+1"的值是否大於“J6”單元格的值(當月的最後一天),如果大於"J6"的值則返回空值,如果不大於則返回“G6+1”。

    在B7單元格輸入公式:=IFERROR(IF((A7+1)>$J$6,"",(A7+1)),""),向右向下拖動填充。這個公式的判斷原理跟上一個公式一樣。

    設定完成後,就不會再顯示大於當月最後一天的日期了。

    在彈出的“新建規則”對話方塊中選擇“使用公式確定要設定格式的單元格”。在下面的輸入區輸入公式:=DATEVALUE(LEFT($C$1,4)&"/"&MID($D$1,1,LEN($D$1)-1)&"/"&A3)=TODAY(),這個公式用於判斷模板中的日期與TODAY函式的值是否相等。點選格式,根據需要設定格式的樣式,後點擊確定。

    好啦,我的日曆表基本製作步驟就是這樣,小夥伴們可以根據自己的喜好對錶格的樣式進行設定,最好對錶格中的進行保護設定,以免別人不小心把你辛苦設定的公式給弄沒了。

  • 中秋節和大豐收的關聯?
  • 嬰兒配方奶粉可選擇性成分有哪些?