IF函数惨遭围攻,这些函数都来抢饭碗?
每日一练里,留了一道题目:
要求是四个裁判都判通过才能算通过,进入决赛。
(f列为模拟的结果)
这个题目的常规思路是用IF函数来实现,如果逻辑是判断四个都通过才算通过,那就要用and来辅助;如果逻辑是判断有一个不通过就不通过,那就用or函数来辅助。
但不管是哪种情况,公式都不短,分享其中的一种解法。
=IF(AND(B2=”通过”,C2=”通过”,D2=”通过”,E2=”通过”),”通过”,”不通过”)
这种逻辑最简单也最直接,今天要和大家分享的是几个不太常规的思路,用意只有一个,利用自己已经能解决的问题,来扩展思路,为学习和灵活使用公式函数创造更多的可能。
COUNTIF篇
前面的思路都是比较逻辑,如果要简化公式,有时候需要把比较逻辑变成数字逻辑,例如四个都通过,也可以理解为该区域中通过的出现次数是4,这时候countif函数就派上用场了。
=IF(COUNTIF(B2:E2,”通过”)=4,”通过”,”不通过”)
这个公式的逻辑也不复杂,只要对countif有基本的了解就可以掌握这种思路。
类似的还有用sum配合数组来实现计数的,公式为:
=IF(SUM(–(B2:E2=”通过”))=4,”通过”,”不通过”)
这个是数组公式,要三键。
虽然公式的样子变了不少,但是逻辑并没有太大的区别。
但是接下来要分享的两个公式,可以说从基本逻辑就完全不同了。
文本函数篇
先来看看公式,估计很多人就蒙圈了。
=TEXT(LEN(PHONETIC(B2:E2))-8,”不通过;;通过;”)
公式里用了三个函数,TEXT、LEN和PHONETIC,是不是有点出乎意料,但要说这个公式的逻辑,也很好理解,就是把B2:E2里的内容连起来,也就是合并,然后判断合并后内容的长度,如果正好是8个字,就通过,超过8个字,就不通过,能想明白这个道理吧。
PHONETIC的作用就是合并,LEN计算长度,然后用算出的长度减8,如果正好相等,结果为0,如果大于8,结果是正数。
根据这个情况利用text的特性来完成最终结果的体现,这公式里最难的应该是text的用法。
如果说这个思路还算新鲜的话,下面这个思路就更清奇了。
这个公式是老师提供的,公式为:
=REPT(“不”,OR(“不通过”=B2:E2))&”通过”
同样是数组公式,需要三键结束。
是不是更蒙了。
要说OR,大家可能都明白,但是REPT可能有些朋友就不太熟悉了。
这个函数本来不难理解,两个参数,意思是按指定的次数重复指定的内容。
例如rept(“a”,5),意思就是重复5次a,结果是aaaaa。
在这个问题中,要重复的是“不”这个字,关键是重复几次,并没有用数字之间指定,而是用了个or。
OR(“不通过”=B2:E2)的意思是,只要有一个不通过,就得到TRUE,反之,只有全部都是通过,才能得到FALSE。(这句话一定要弄清楚)
然后TRUE代表1,FALSE代表0,重复几次“不”就很明显了。
后面再&”通过”,结果就有了。