在本例中,將使用數(shù)組公式實(shí)現(xiàn)一個(gè)動(dòng)態(tài)的日歷,根據(jù)本機(jī)的時(shí)間顯示當(dāng)前一個(gè)月的日歷。
下面先說明這個(gè)日歷的實(shí)現(xiàn)步驟:
1.在A1單元格內(nèi)輸入公式“=TODAY()”,在A2單元格內(nèi)輸入“=A3”,將A2單元格復(fù)制到B2:G3單元格區(qū)域。
2.設(shè)置A2:G2單元格的格式,使其分類為日期的星期,選中A3:G8單元格區(qū)域。輸入以下公式:
DATE(YEAR(A1),MONTH(A1),1)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),2)+{1,2,3,4,5,6,7}+{0;1;2;3;4;5}*7)
3.按Ctrl+Shift+Enter組合鍵確認(rèn)輸入。
現(xiàn)逐步分析輸入的這個(gè)數(shù)組公式:
①因?yàn)橐粋€(gè)月最多會(huì)跨越6個(gè)星期,所以需要一個(gè)6行7列(一星期7天)的單元格區(qū)域來顯示這個(gè)日歷。
②這個(gè)公式的后部,即“{1,2,3,4,5,6,7}+{0;1;2;3;4;5}*7”,構(gòu)成了這個(gè)日歷的框架。如果在一個(gè)6 行7列的單元格區(qū)域內(nèi)輸入這個(gè)輸入公式,可以得到6行7列的二維數(shù)組
{1,2,3,4,5,6,7;8,9,10,11,12,13,14;15,16,17,18,19,20,21;
22,23,24,25,26,27,28;29,30,31,32,33,34,35;36,37,38,39,40,41,42}
這個(gè)數(shù)姐的元素按照從第一行由左到右,再由下一行由左到右順序,逐個(gè)加一遞增。這個(gè)數(shù)組公式以此來實(shí)現(xiàn)每日的遞增。
③這個(gè)公式的前部,即“DATE(YEAR(A1),MONTH(A1),1)”,通過調(diào)用A1單元格,來得到本月一日的日期。
④本月一日的日期和6行7列的二維數(shù)組相加,又可得到一個(gè)6行7列的二維數(shù)組。這個(gè)二維數(shù)組實(shí)現(xiàn)了日期的逐一顯示。但是這個(gè)按照曰期逐一顯示的二維數(shù)組是從2號(hào)開始的,而且2號(hào)顯示在了星期一的位置。
⑤“WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),2)”部分用來對(duì)日期的位置進(jìn)行調(diào)整。以2007年1月為例(2007年1月1日為星期一),可以得到值“-1”。這樣就對(duì)按日期逐一顯示的6行7列二維數(shù)組做出了調(diào)整,2007年1月1日出現(xiàn)在二維數(shù)組第一行的第一個(gè)位置,而之后的日期逐一顯示。
通過IF函數(shù),可以使日歷中的非當(dāng)月日期不顯示。
4.選中A3:G8單元格區(qū)域,把公式修改為:
=IF(MONTH(DATE(YEAR(A1),MONTH(A1),1))<>
MONTH(DATE(YEAR(A1),MONTH(A1),1)-WEEKDAY
(DATE(YEAR(A1),MONTH(A1),1),2)+{1,2,3,4,5,6,7}+{0;1;2;3;4;5}*7),""
,DATE(YEAR(A1),MONTH(A1),1)-WEEKDAY(DATE(C4YEAR(A1),MONTH(A1),1),2)+{1,2,3,4,5,6,7}+{0;1;2;3;4;5}*7)
最后按Ctrl+Shift+Enter組合鍵確認(rèn)輸入。
這樣就以數(shù)組公式的方式顯示出日歷。通過修改各單元格的格式,可以使顯示更加美觀。
Excel使用數(shù)組公式顯示的日歷 實(shí)例講解