Excel其实具备了数据库的部分功能,既能存储数据,也能查询数据,同时还可以设定指令完成一些智能化的操作。比如今天的实例中要实现的生日变色提醒和随机祝福语,给你一个非比寻常的体验。

这里有两张表,一个是通讯录,为演示方便只列出了姓名和出生日期,以及祝福语。

另一个表中是一些祝福的话,因为我们要随机产生祝福语,所以给祝福语增加了个序号,以方便通过随机获取祝福编号来匹配相应的祝福语。

DATEDIF()函数
DATEDIF(开始日期,终止日期,比较单位)
这个函数用于计算年龄最合适不过了,生日当天才增长1岁,这一天恰好适合用来判断今天是不是生日。
=DATEDIF(B2,TODAY(),"Y")
这个公式用于计算B2单元格中的日期距离今天的年数,TODAY()函数就是今天的日期,后面的“Y”表示以年为单位,还有“M”表示月,“D”表示日,以及“YM”、“YD”、“MD”等,这里就不展开讲了,有兴趣的朋友可以自行尝试一下。

为了准确的检测出今天是不是生日当天,我们还需要知道昨天距离出生日期的年数,前面也说过,不到生日这天就不算一年,那么今天生日的话,年数加1,而昨天还没到生日,年数就保持去年的年数。
=DATEDIF(B2,TODAY()-1,"Y")
今天的日期减1就是昨天,这样距离TODAY()-1的年数就计算出来了。

结果中可以看出,生日这天与生日当天的昨天相差1,要清楚这个差距的来历,后面我们会在公式中用到它。

刚出生的孩子周岁为0岁,只有过了一年之后的出生日期这天才增长一岁,所以
=DATEDIF(B2,TODAY(),"Y")>0

这个条件为“真”时,才算增长了一岁,示例中的出生日期都在今天之前,所以,在出生日期与今天的日期的差大于0都为TRUE。

并不是说大于0就表示生日当天,也有可能已经过了生日这天,所以,我们还要进一步判断,只有年数大于0并且今天计算的年数比昨天计算的年数等于1,这俩条件同时成立,才证明今天是生日当天。
PS:试想一下,若要生日前一天提醒的话该如何表示呢?
AND()运算符
AND(逻辑值1,逻辑值2,逻辑值n)
AND就是并且的意思,在Excel中以这种形式来判断多个条件是否同时成立,只有所有条件都成立,整个语句的结果才为真。

整个公式的结果为TRUE的,只有2020/5/10这个,今天是2024/5/10,也就是生日当天,其他三个就不满足条件了。

判断是否生日当天的算法设计好了,那么我们来实现生日当天出生日期变色的功能。需要把公式复制起来备用。

选中B列的出生日期数据部分,给它设置条件格式。

点击条件格式-新建规则,创建一个新的条件格式,通过判断条件是否成立,来设置单元格的背景色。

选择规则类型为“使用公式确定要设置的单元格”,然后将复制的内容粘贴到公式处,并且设置格式为黄金背景色。

这样,当天生日的数据就自动显示为黄金背景色了。

修改赵一曼的生日为1900/5/10,它就变成了今天生日,所以也显示为黄金背景色。
生日祝福语

在生日判断的公式基础上,增加一个IF语句来判断结果是否为TRUE,如果是生日当天,那么显示"生日快乐",否则显示为空。

这样的祝福过于单一了,如何实现随机祝福呢?学习的过程就是折腾的过程,有了想法就去想办法实现它。
这里使用Vlookup函数替代了“生日快乐”
VLOOKUP(RANDBETWEEN(1,4),祝福语!A:B,2,0)
RANDBETWEEN()是随机生成数字,两个参数分别是最小限制和最大限制,结果就在这个区间随机产生。

这样就随机产生了两条祝福语,我们的预期效果就实现了。

把李四的生日也改为今天,改完后确认时整个表就自动刷新,重新生成了祝福语。
通过本文的思路和步骤,可以轻松地给你的Excel电子表格添加一些个性化的元素,使其不仅仅是一个数据记录工具,而且还可以是一个有趣的个人助理哦~!