使用数组公式创建日历

如何使用数组公式创建如下图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移除了下月的日期。

小结

  • 创建日历看似复杂,但理解其背后蕴藏的道理后似乎很简单。

  • 命名数组的应用技巧,值得借鉴。

(0)

相关推荐

  • 计算指定年月的第n周有几天

    你好,我是刘卓.欢迎来到我的公号,excel函数解析.之前的文章我和你分享了year,month,day,date,today,eomonth,edate,weekday,weeknum等日期函数的用 ...

  • 手把手教你,学会星期相关函数

    在Excel 2016中,用于处理星期的函数主要包括WEEKDAY.WEEKNUM及ISOWEEKNUM函数.除此之外,也经常用MOD函数和TEXT函数完成星期值的处理. 用W EEKDAY函数返回指 ...

  • 精通Excel数组公式15:使用INDEX函数和OFFSET函数创建动态单元格区域(续)

    excelperfect 导语:本文为<精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域>的后半部分. 将动态单元格区域公式定义为名称 创建动态单元格区域 ...

  • 精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域

    excelperfect 动态单元格区域是指当添加或删除源数据时,或者随着包含单元格区域的公式被向下复制时根据某条件更改,可以自动扩展或收缩的单元格区域,可以用于公式.图表.数据透视表和其他位置. 那 ...

  • 学习理解Excel数组公式的2种方法

    对于初学者来说,数组公式也是够难理解的了,尤其是那些大型公式,看着头都大了!然而,如果我们能够在学习数组公式时,看到其计算过程,无疑会很有帮助. 方法1:使用F9键,查看数组公式的中间值 例如下图所示 ...

  • 进行排序和筛选的数组公式

    数组公式可以用于动态筛选数据区域,其中的一个关键步骤是使用数组公式去排序一些数字. 使用数组公式排序数字 如下图1所示,列A中的单元格区域A1:A10放置了一系列无序的数字,要求在列B中以升序排列该区 ...

  • 公式中的王者——数组公式

    Excel中有一类称作数组公式的公式,相对比较复杂,有点难以理解,很多人望而却步,然而数组公式很强大,能够完成很多不可思议的任务,绝对值得学习. 使用数组公式,可以判断数据是否与指定区域中的数据相匹配 ...

  • Excel小技巧82:利用数组公式来保护行

    excelperfect 这里介绍数组公式的一个另类用法.假设你不想让其他人在工作表某个部分删除或插入行,移动到尽量靠右侧的单元格,在相对应的行中创建一个数组. 例如,不想让他人在工作表的第1至9行范 ...

  • excel数组公式,你会用么?

    你好,我是世杰老师,很高兴在这里和你遇见. 我们经常会在一些excel函数公式两边看到有大括号{},我想大部分同学看到大括号心中就会浮现大大的问号,到底这个大括号有什么作用,今天老师为同学们揭秘大括号 ...

  • 学会就能效率翻倍的数组公式,到底怎么用?

    可乐的数据分析之路 1.什么是数组公式 在研究数组公式前,先要明确什么是数组? 数组嘛,可以理解为若干相同数据的组合 比如{1,2,3,4}是数值组合在一起,{"c";" ...

  • Excel从多个日期对应价格中查询产品最新价格的数组公式讲解

    Excel从多个日期对应价格中查询产品最新价格的数组公式讲解