大家好呀,我是小 E ~
相信大家都遇到过一个问题:长公式写着写着就不知道自己写哪里了。
哎,长公式逻辑出错,真的困扰着太多人啦!
01问题说明
学习函数公式的时候,经常遇到的问题是:
感觉自己公式学得差不多了,但是写公式的时候总是出错,也不知道错误在哪里。
前两天就有位网友向我提问,一个关于生日提醒的公式问题。
公式出错了↑
图片中的公式是这样的:
=TEXT(TEXT(C4,”mm-dd”)-TODAY(),”0天后生日,,今天生日”)
你能找出公式里的错误吗?
太难了!
这个公式难点在哪里呢?
对,太长了,逻辑复杂,错误的原因有多种可能,排查起来非常困难。
长公式里面有很多的公式嵌套,参数非常多,如果还包含一些数字常量,逻辑关系非常容易出错。
02解决方法
那么怎么样解决长公式难题呢?我总结了一个套路,可以简化长公式。
❶ 整理公式逻辑;
❷ 编写分解公式;
❸ 整合分解公式,输出长公式。
我们用这个生日提醒的案例,把这个套路验证一下。
◆ 整理公式逻辑 ◆
首先,我在幕布里,整理公式逻辑的思维导图,这个长公式大致可以分成 3 个步骤。
这个步骤,应该不难理解。
第 1 步,提升出生日期中的生日信息;
第 2 步,计算生日和今天相差天数;
第 3 步,根据相差天数,进行生日提醒。
◆ 编写分解公式 ◆
接下来,我们根据这几个步骤,编写分解的公式。
第 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 时显示的不同内容,用下面这个动态图表看起来会更加直观。
所以,我们把最后一步的公式改成这样。
这样我们就把分解的公式写完了。
◆ 整合分解公式,输出长公式 ◆
分解公式之间是相互引用的,我们把引用的位置,换成对应单元格的公式,就可以输出长公式。
最后我们得到的长公式就是这样的。
填充公式之后,正确返回了对应的结果。
今天的分享到这里就结束啦,大家有没有学到写长公式的套路呢?