以前很多人喜歡在辦公桌上放一本臺歷,,方便查詢?nèi)掌冢F(xiàn)在電腦已經(jīng)普及了,,大家都喜歡從電腦上查看日歷,,又方便又不占地方。
用編程的方法可以制做電子日歷,,但會編程的人不多,。如今EXCEL電子表格的普及率很高,由于它強(qiáng)大的數(shù)據(jù)處理能力,,被很多人當(dāng)做必不可少的辦公工具,。
在EXCEL中有很多時間函數(shù),通過這些函數(shù)可以制做一款簡單實(shí)用的日歷牌,。
先看一下做好的樣式:
在這個日歷牌的上面左右兩個微調(diào)按鈕,,可以通過它們調(diào)整想要顯示的年月。
下面就介紹制做過程
1,、選畫邊框
其中C2與D2單元格是合并單元格,,用于顯示年份。由于年份是四位數(shù)字,所以要占用兩個單元格,。
其中的E10:G10也是合并單元格,,這是為了顯示“今天”的日期,包含了年月日三個內(nèi)容,,所以要占三個單元格,。
2、填入內(nèi)容
這些內(nèi)容不需要公式,,直接手工輸入,,根據(jù)自己的喜好設(shè)置字體、字號,、顏色,。
注意年份輸入在C2單元格,月份輸入在F2單元格,,這兩個位置會被下面的公式所引用,。
3、日歷公式
這是關(guān)鍵一步,,要輸入公式了,,公式的區(qū)域在B4:H9,由于第一個單元格是B4單元格,,所以公式中要對它進(jìn)行“絕對引用”。
可能很多人都不相信,,這個區(qū)域中的公式都是一樣的,,雖然B4:H9區(qū)域共有42個單元格,但都使用了完全相同的公式,,只要在B4單元格輸入一個公式,,然后通過拖動復(fù)制的方式就可以完成所有公式的輸入。
公式 =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)))
公式有點(diǎn)長,,分析起來感覺有些費(fèi)力,,我們試著對它進(jìn)行“簡化”。
可以看到公式中有一部份內(nèi)容重復(fù)出現(xiàn)了三次,,即“((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)”,我們給它起名為“最后一天”,,因?yàn)樗怯?jì)算日歷牌中,,當(dāng)月最后一天的號數(shù),也可以理解為這個月有幾天。
然后把“號”與“最后一天”代入公式看一下:
公式就變成=IF(OR((號>最后一天),(號<1)),"",號)
這樣是不是簡單很多了,,也容易理解了,。
這就是一個常見的IF判斷公式,在條件部份使用了OR函數(shù)進(jìn)行邏輯“或”運(yùn)算,,只要“(號>最后一天),(號<1)”兩部份中,,任一部份為“真”,就使條件成立,。
提示:這只是為了分析方便而做的“簡化”,,實(shí)際使用時還要使用原公式的。
提示:對所有長公式都可以用這種方法“簡化”,,然后對每一部份逐一分析理解,。
首先這是一個由IF函數(shù)構(gòu)成的判斷公式,大家都知道IF函數(shù)有三個參數(shù),,第一個參數(shù)是“條件”,,第二個參數(shù)是“條件”為“真”是執(zhí)行的部份,第三個參數(shù)是“條件”為“假”時執(zhí)行的部份,,一般的使用格式為 if(條件,,真,假)
公式的含義是:如果當(dāng)前單元格中顯示的“號”大于當(dāng)前月的“最后一天”或者小于“1”,,那就說明這個“號”不應(yīng)顯示在當(dāng)前月份牌中,,于是就通過IF函數(shù)的第二個參數(shù)顯示為一個空格;反之,,通過IF函數(shù)的第三個參數(shù),,把這個“號”就顯示在當(dāng)前單元格中。
接下來對每一部份進(jìn)行分析:
“號”:“((ROW()-ROW($B$4))*7+(COLUMN()-COLUMN($B$4)-WEEKDAY(DATE($C$2,$F$2,1))+2))”
它通過公式所在單元格的行號(ROW()),、列號(COLUMN())與B4單元格的位置間隔,,來計(jì)算“當(dāng)前”格中顯示的數(shù)字,再把這個數(shù)字與“星期”對應(yīng)起來,。
其中的“WEEKDAY(DATE($C$2,$F$2,1))”是將C2的年,、F2的月及數(shù)字1,通過DATE函數(shù)組成一個EXCEL可以識別的日期(比如2011年8月1日),,再用WEEKDAY函數(shù)得到這個日期的星期,。
由于我們在日歷牌中的第2行(工作表的第3行)已經(jīng)將“星期”標(biāo)志固定了,所以公式中必須將顯示的“號”與星期來對應(yīng),,否則號與星期不對應(yīng),,日歷牌也就失去意義了。
提示:WEEKDAY函數(shù)返回表示星期的代碼,,它有兩個參數(shù),,第一個參數(shù)是要計(jì)算的日期,,第二個參數(shù)如果省略,那么返回的代碼1--7將對應(yīng)“星期日,、星期一,、...、星期六”,。
“最后一天”:“DAY(DATE($C$2,$F$2+1,1)-1)”
它與上面類似,,通過DATE函數(shù)把C2的年、F2的月加1(表示次月),、數(shù)字1組成一個EXCEL可以識別的日期,,這個日期是當(dāng)前要顯示月份的下一個月1日,由于EXCEL不能直接得到某月的最后一天,,所以要把這個“次月1日”減1才能得到本月最后一天的日數(shù),。(大月31,小月30,,2月為28或29)
通過上面分析,,相信大多數(shù)朋友能理解公式的含義了,其他暫時不理解的朋友也不用著急,,只要會用它就行了,。
下面繼續(xù)我們的日歷牌制作
在B4格輸入公式后可以用鼠標(biāo)拖動復(fù)制了,按住B4單元格右下角的“填充柄”把公式復(fù)制到B4:H9區(qū)域中的每一個單元格中,。
最后在E10單元格輸入一個公式,,用來表示“今天”的日期,公式 =NOW()
這個公式只用一個日期函數(shù)NOW,,它會返回電腦系統(tǒng)今天的日期
提示:如果E10單元格中顯示的內(nèi)容與圖片中不相同,,請選中E10單元格,按鼠標(biāo)右鍵,,選“單元格格式”,在其中的“數(shù)字”選項(xiàng)卡中設(shè)置一下日期格式就行了,。
4,、添加控件
最麻煩的公式部份完成了,接下來做兩個微調(diào)按鈕,,用于調(diào)整年和月,。
在“視圖-工具欄”中找到“窗體”工具欄,讓它顯示出來,。
提示:這是EXCEL2003的“窗體”工具欄,,如果你用的是EXCEL2007,需要在“開發(fā)工具-插入-表單控件”中找到“數(shù)值調(diào)節(jié)鈕”控件,。
用鼠標(biāo)選中上面的“微調(diào)項(xiàng)”,,在B2單元格與H2單元格位置各“畫”出一個大小適中的按鈕,,然后分別用鼠標(biāo)右鍵點(diǎn)擊它們,從彈出的快捷菜單中選“設(shè)置控件格式”,。
一定要注意里面的“單元格鏈接”不要填錯了,。
做到這里就基本完成了,最后再對日歷牌“美化”一下,,每個人的喜好不同,,自己隨意。
通過兩個“微調(diào)按鈕”就能查詢到任意日期,。
提示:在本例B2:H10區(qū)域中,,公式引用了C2、F2,、B4這三個單元格,,如果你制做的日歷牌不在這個區(qū)域,需要把公式中的單元格引用改成你的實(shí)際單元格地址,。單元格地址修改后,,還要把兩個微調(diào)框的“單元格鏈接”也相應(yīng)修改。