查看原文
其他

一个生日提醒案例,总结出长公式套路

拉登Dony 拉小登 2022-06-10

拉小登Excel

好的表格是设计出来的

关注

/ 1 /

问题说明

学习函数公式的时候,经常遇到的问题是:

感觉自己公式学的差不多了,但是写公式的时候总是出错,也不知道错误在哪里。

前两天就有位网友向我提问,一个关于生日提醒的公式问题。

公式出错了↑

图片中的公式是这样的:

=TEXT(TEXT(C4,”mm-dd”)-TODAY(),”0天后生日,,今天生日”)

你能找出公式里的错误吗?太难了!

这个公式难点在哪里呢?

对,太长了,逻辑复杂,错误的原因有多种可能,排查起来非常困难。

长公式里面有很多的公式嵌套,参数非常多,如果还包含一些数字常量,逻辑关系非常容易出错。

/ 2 /

解决方法

那么怎么样解决长公式难题呢?我总结了一个套路,可以简化长公式。

1- 整理公式逻辑

2- 编写分解公式

3- 整合分解公式,输出长公式

我们用这个生日提醒的案例,把这个套路验证一下。

1- 整理公式逻辑

首先,我在幕布里,整理公式逻辑的思维导图,这个长公式大致可以分成3个步骤。

这个步骤应该不难理解

第1步,提升出生日期中的生日信息

第2步,计算生日和今天相差天数

第3步,根据相差天数,进行生日提醒

2- 编写分解公式

接下来,我们根据这几个步骤,编写分解的公式。

第1步,是提取生日信息

我们假设出生日期是2013-11-30,并定义它为变量A。

接下来是从出生日期A当中提取生日信息。

方法有很多,可以用RIGHT函数,这里我们借助于TEXT函数来完成。

在TEXT函数中,使用mm-dd的格式代码,就把日期当中的月和日给提取出来了。

第2步,计算生日和今天相差天数

首先获取今天的日期,这个很简单用TODAY()函数,我们假设保存到C变量中。

然后计算生日和今天日期相差的天数,直接用生日B,减去今天日期C就可以了。

我们假设得到的结果放在D变量中。

第3步,生日提醒

这逻辑有一点点复杂,不过看上面的逻辑图,也不难理解,公式当中我是这么实现的。

用了3个IF函数来进行不同条件的判断。相差天数D=3,也就是D>0,那么提醒的结果应该是“3天后生日”。

没错的,不过这也有些复杂,如果把这3个IF函数嵌套在一起,结果会更复杂,变成这个样子。

太长了,所以这里我使用一个更简单的TEXT函数,我们先看一下公式。

这里的重点在于第2个参数,这是一个条件格式代码,不同条件之间用分号间隔,条件判断的规则是这样的。

两个分号之间对应的分别是>0; <0 ; =0时显示的不同内容,用下面这个动态图表看起来会更加直观。

所以我们把最后一步的公式改成这样。

这样我们就把分解的公式写完了。

3- 整合分解公式,输出长公式

分解公式之间是相互引用的,我们把引用的位置,换成对应单元格的公式,就可以输出长公式。

最后我们得到的长公式就是这样的。

填充公式之后,正确的返回了对应的结果。

/ 3 /

下载案例

公众号后台回复生日提醒,获取本节案例。

/ 4 /

聊5毛钱

今天拉登换了一个写法,没讲高深的表格设计,讨论了一下长公式,大家还喜欢吗?

你在学习函数公式的时候,哪个公式不会?留言告诉我吧。

说不定明天的文章里,就有你!

我是拉小登,源于Excel,不只是Excel

= = 推荐文章 = =

会一点VBA是一种什么感受?

错啦,柏拉图你一直都做错了

A036-第16期答疑-如何快速完成数据分组统计

A035-图表灵感,给折线添加一个垂直线

A030-一个图表分两半,一半柱形图,一半折线图

A028-动态图表的秘密-OFFSET函数法

A029-如何在一张图表中,同时使用折线图和柱形图


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存