Excel公式練習14:使用數組公式創建日曆
本次的練習是:如何使用數組公式創建如下圖1所示的日曆?
圖1
在單元格B1中輸入日期時,顯示該日期所在月的日曆,如下圖所示。
圖2
先不看答案,自已動手試一試。
公式思路
一周有7天,一個月有28天、29天、30天、31天,每個月的第一天開始的星期幾不一樣,如果分成含有7列的行的話,最少需要4行,最多需要6行。因此,需要創建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}。
然後,找到想要創建日曆的月份的第1天,將代表這天的日期序號與數組相加,得到代表這個月的每天的序號,再減去該月份的第1天是當周的星期幾,讓日曆正好能夠與星期幾相對應。
公式解析
獲取當月日曆的數組公式:
=IF(DAY(calendar)>15,IF(ROW()=6,"",calendar),IF(DAY(calendar)<15,IF(ROW()>9,"",calendar),calendar))
其中,calendar是一個命名公式,即:
=week*7 weekday B3-B2
其中,week和weekday都是命名數組,即:
week:={0;1;2;3;4;5}
weekday:={1,2,3,4,5,6,7}
定義的名稱如圖3。
圖3
week*7 weekday得到數組:
{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}。
在上圖2所示的工作表中,在單元格B1中放置了想要創建的日曆月所在的日期。單元格B3中放置日期所在月份的第1天,B2放置這一天是這一周的第幾天。公式:week*7 weekday B3-B2得到從該月份第一天所在周的周一開始之後的42天的日期序列。
最後的數組公式中,=IF(DAY(calendar)>15,IF(ROW()=6,"",calendar)表示如果上個月的日期大於15且在開始行,那麼就顯示為空,即不顯示上月的日期;同樣,IF(DAY(calendar)<15,IF(ROW()>9,"",calendar移除了下月的日期。
小結
創建日曆看似複雜,但理解其背後蘊藏的道理後似乎很簡單。
命名數組的應用技巧,值得借鑒。
下期預告:
Excel公式練習15:求2018年母親節的日期
如何使用公式求出2018年母親節的日期?
本文屬原創文章,轉載請聯繫我(xhdsxfjy@163.com)或者註明出處。
歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。
推薦閱讀:
※2017.05.28 今日日曆
※2017.02.04 今日日曆
※你要知道!中國的日曆,既不是陰曆,也不是陽曆 [一點資訊]