在本例中,將使用數組公式實現一個動態的日歷,根據本機的時間顯示當前一個月的日歷。
下面先說明這個日歷的實現步驟:
1.在A1單元格內輸入公式“=TODAY()”,在A2單元格內輸入“=A3”,將A2單元格復制到B2:G3單元格區域。
2.設置A2:G2單元格的格式,使其分類為日期的星期,選中A3:G8單元格區域。輸入以下公式:
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組合鍵確認輸入。
現逐步分析輸入的這個數組公式:
①因為一個月最多會跨越6個星期,所以需要一個6行7列(一星期7天)的單元格區域來顯示這個日歷。
②這個公式的后部,即“{1,2,3,4,5,6,7}+{0;1;2;3;4;5}*7”,構成了這個日歷的框架。如果在一個6 行7列的單元格區域內輸入這個輸入公式,可以得到6行7列的二維數組
{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}
這個數姐的元素按照從第一行由左到右,再由下一行由左到右順序,逐個加一遞增。這個數組公式以此來實現每日的遞增。
③這個公式的前部,即“DATE(YEAR(A1),MONTH(A1),1)”,通過調用A1單元格,來得到本月一日的日期。
④本月一日的日期和6行7列的二維數組相加,又可得到一個6行7列的二維數組。這個二維數組實現了日期的逐一顯示。但是這個按照曰期逐一顯示的二維數組是從2號開始的,而且2號顯示在了星期一的位置。
⑤“WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),2)”部分用來對日期的位置進行調整。以2007年1月為例(2007年1月1日為星期一),可以得到值“-1”。這樣就對按日期逐一顯示的6行7列二維數組做出了調整,2007年1月1日出現在二維數組第一行的第一個位置,而之后的日期逐一顯示。
通過IF函數,可以使日歷中的非當月日期不顯示。
4.選中A3:G8單元格區域,把公式修改為:
=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組合鍵確認輸入。
這樣就以數組公式的方式顯示出日歷。通過修改各單元格的格式,可以使顯示更加美觀。
Excel使用數組公式顯示的日歷 實例講解