分享

公式满足条件就停止计算(思路重于技巧)

 senllon 2019-07-07

    收到一封有意思的邮件,显然,读者“dd”对函数的掌握已经颇具火候,所以他/她提出了一个难题:

“如果在状态“结束”时,到期日就停留在那里。”

 

    换句话说,就是当D列单元格输入了“结束”二字时,对应的C列单元格自动停止计算,让计算结果停留在最近的一次。

 

公式满足条件就停止计算(思路重于技巧)

    可是,哪一种表达方式可以命令Excel停止计算呢?以正常的功能和函数来讲,是没有的,因为Excel中并不存在Stop这样的函数。所以,如果绕进了这个思维逻辑,也许,只有程序才能解决了。不过,并不是所有人都会编程,也不是所有人都需要学习编程。那么,对于不会写程序的人,要想解决这个问题,就只能另辟蹊径。

 

    其实,在运用函数的时候,思维方式第一,技巧反而其次,常常见到由于想错逻辑而把简单问题复杂化的情况。Excel运算的潜规则中,没有“满足条件就停止计算”,只有“满足条件就这样计算”。于是,换个角度理解该需求,应该是——当状态为“结束”时,就“这样”计算

 

    这就涉及到“结束”“这样”的具体意义。仔细看公式,不用管它到底是什么意思,但能看出其中有一个变量叫“TODAY()”,因为有它,公式结果才会随着计算机的日期变化而变化。而“结束”这两个字的出现,更深层的意义是输入“结束”的日期。也就是说,当我在2013/3/18结束时,公式中的TODAY()就不能再变化了,只能用2013/3/18作为最后的日期参与计算。于是,“这样”的意义也就浮现了出来。

 

    那么,重新诠释该需求,就会变成——当输入“结束”的日期时,公式以“结束”日期为参数计算,否则,以TODAY()为参数计算。进行到这里,公式的逻辑就无比清晰了。只要在D列添加“结束日期”,用IF函数做判断,就能实现类似停止的效果。但本质上,这并非停止,只是“满足条件就这样计算”。这是两种截然不同的思维逻辑,而只有后者,才是符合Excel规则的。同时,因为已经手工输入了“结束日期”,就不用再手工输入状态“结束”,而可以用IF函数取代。

 

公式满足条件就停止计算(思路重于技巧)

    顺便提一下IF函数,有不少工具书会教你简写的方式,如E列的公式,判断条件只是一个值而不是判断句。把它的意思补全,其实也是LEN(D2)<>0,因为IF第一参数的值如果不为0,就默认是“真”,反之为“假”。但我个人是不推崇这种写法的,原因就是,这不是应该省力气的地方,如果写成LEN(D2)<>0,无论自己还是别人,都会看得比较舒服,念起来也很顺——当D2的字符数不为0的时候,返回“结束”,否则返回“空”。所以,真正的“懒人”,该花的时间一分钟不少。

 

用函数,写公式,思路重于技巧。别把简单的问题复杂化,也不用硬要学着高手们一步到位。有时,加个辅助列,添个小标识,就全搞定了。

 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多