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