標籤:

用EXCEL做日曆牌(公曆)

用EXCEL做日曆牌(公曆)2011-08-05 11:32

以前很多人喜歡在辦公桌上放一本枱曆,方便查詢日期,現在電腦已經普及了,大家都喜歡從電腦上查看日曆,又方便又不佔地方。用編程的方法可以製做電子日曆,但會編程的人不多。如今EXCEL電子表格的普及率很高,由於它強大的數據處理能力,被很多人當做必不可少的辦公工具。在EXCEL中有很多時間函數,通過這些函數可以製做一款簡單實用的日曆牌。先看一下做好的樣式:

在這個日曆牌的上面左右兩個微調按鈕,可以通過它們調整想要顯示的年月。下面就介紹製做過程1、選畫邊框

其中C2與D2單元格是合併單元格,用於顯示年份。由於年份是四位數字,所以要佔用兩個單元格。其中的E10:G10也是合併單元格,這是為了顯示「今天」的日期,包含了年月日三個內容,所以要佔三個單元格。

2、填入內容

這些內容不需要公式,直接手工輸入,根據自己的喜好設置字體、字型大小、顏色。注意年份輸入在C2單元格,月份輸入在F2單元格,這兩個位置會被下面的公式所引用。

3、日曆公式這是關鍵一步,要輸入公式了,公式的區域在B4:H9,由於第一個單元格是B4單元格,所以公式中要對它進行「絕對引用」。可能很多人都不相信,這個區域中的公式都是一樣的,雖然B4:H9區域共有42個單元格,但都使用了完全相同的公式,只要在B4單元格輸入一個公式,然後通過拖動複製的方式就可以完成所有公式的輸入。

公式 =IF(OR(((ROW()-ROW($B$4))*7+(COLUMN()-COLUMN($B$4)-WEEKDAY(DATE($C$2,$F$2,1))+2))>DAY(DATE($C$2,$F$2+1,1)-1),((ROW()-ROW($B$4))*7+(COLUMN()-COLUMN($B$4)-WEEKDAY(DATE($C$2,$F$2,1))+2))<1),"",((ROW()-ROW($B$4))*7+(COLUMN()-COLUMN($B$4)-WEEKDAY(DATE($C$2,$F$2,1))+2)))

公式有點長,分析起來感覺有些費力,我們試著對它進行「簡化」。可以看到公式中有一部份內容重複出現了三次,即「((ROW()-ROW($B$4))*7+(COLUMN()-COLUMN($B$4)-WEEKDAY(DATE($C$2,$F$2,1))+2))」,為了方便敘述,給它起個名字叫「號」,也就是幾月幾號的意思。

還有一小段「DAY(DATE($C$2,$F$2+1,1)-1)」,我們給它起名為「最後一天」,因為它是計算日曆牌中,當月最後一天的號數,也可以理解為這個月有幾天。

然後把「號」與「最後一天」代入公式看一下:公式就變成=IF(OR((號>最後一天),(號<1)),"",號)

這樣是不是簡單很多了,也容易理解了。

這就是一個常見的IF判斷公式,在條件部份使用了OR函數進行邏輯「或」運算,只要「(號>最後一天),(號<1)」兩部份中,任一部份為「真」,就使條件成立。

提示:這只是為了分析方便而做的「簡化」,實際使用時還要使用原公式的。提示:對所有長公式都可以用這種方法「簡化」,然後對每一部份逐一分析理解。

首先這是一個由IF函數構成的判斷公式,大家都知道IF函數有三個參數,第一個參數是「條件」,第二個參數是「條件」為「真」是執行的部份,第三個參數是「條件」為「假」時執行的部份,一般的使用格式為 if(條件,真,假)公式的含義是:如果當前單元格中顯示的「號」大於當前月的「最後一天」或者小於「1」,那就說明這個「號」不應顯示在當前月份牌中,於是就通過IF函數的第二個參數顯示為一個空格;反之,通過IF函數的第三個參數,把這個「號」就顯示在當前單元格中。

接下來對每一部份進行分析:「號」:「((ROW()-ROW($B$4))*7+(COLUMN()-COLUMN($B$4)-WEEKDAY(DATE($C$2,$F$2,1))+2))」它通過公式所在單元格的行號(ROW())、列號(COLUMN())與B4單元格的位置間隔,來計算「當前」格中顯示的數字,再把這個數字與「星期」對應起來。其中的「WEEKDAY(DATE($C$2,$F$2,1))」是將C2的年、F2的月及數字1,通過DATE函數組成一個EXCEL可以識別的日期(比如2011年8月1日),再用WEEKDAY函數得到這個日期的星期。由於我們在日曆牌中的第2行(工作表的第3行)已經將「星期」標誌固定了,所以公式中必須將顯示的「號」與星期來對應,否則號與星期不對應,日曆牌也就失去意義了。提示:WEEKDAY函數返回表示星期的代碼,它有兩個參數,第一個參數是要計算的日期,第二個參數如果省略,那麼返回的代碼1--7將對應「星期日、星期一、...、星期六」。

「最後一天」:「DAY(DATE($C$2,$F$2+1,1)-1)」它與上面類似,通過DATE函數把C2的年、F2的月加1(表示次月)、數字1組成一個EXCEL可以識別的日期,這個日期是當前要顯示月份的下一個月1日,由於EXCEL不能直接得到某月的最後一天,所以要把這個「次月1日」減1才能得到本月最後一天的日數。(大月31,小月30,2月為28或29)

通過上面分析,相信大多數朋友能理解公式的含義了,其他暫時不理解的朋友也不用著急,只要會用它就行了。

下面繼續我們的日曆牌製作

在B4格輸入公式後可以用滑鼠拖動複製了,按住B4單元格右下角的「填充柄」把公式複製到B4:H9區域中的每一個單元格中。最後在E10單元格輸入一個公式,用來表示「今天」的日期,公式 =NOW()這個公式只用一個日期函數NOW,它會返回電腦系統今天的日期提示:如果E10單元格中顯示的內容與圖片中不相同,請選中E10單元格,按滑鼠右鍵,選「單元格格式」,在其中的「數字」選項卡中設置一下日期格式就行了。

4、添加控制項

最麻煩的公式部份完成了,接下來做兩個微調按鈕,用於調整年和月。在「視圖-工具欄」中找到「窗體」工具欄,讓它顯示出來。

提示:這是EXCEL2003的「窗體」工具欄,如果你用的是EXCEL2007,需要在「開發工具-插入-表單控制項」中找到「數值調節鈕」控制項。

用滑鼠選中上面的「微調項」,在B2單元格與H2單元格位置各「畫」出一個大小適中的按鈕,然後分別用滑鼠右鍵點擊它們,從彈出的快捷菜單中選「設置控制項格式」。

一定要注意裡面的「單元格鏈接」不要填錯了。

做到這裡就基本完成了,最後再對日曆牌「美化」一下,每個人的喜好不同,自己隨意。

通過兩個「微調按鈕」就能查詢到任意日期。

提示:在本例B2:H10區域中,公式引用了C2、F2、B4這三個單元格,如果你製做的日曆牌不在這個區域,需要把公式中的單元格引用改成你的實際單元格地址。單元格地址修改後,還要把兩個微調框的「單元格鏈接」也相應修改。

推薦閱讀:

黃道日曆專有名詞解釋
2013年日曆表
2017.11.27 今日日曆
2017.05.03 今日日曆
2017.08.17 今日日曆

TAG:日曆 | 公曆 |