3条IF函数的经典公式,你都会吗?
国庆期间,Excel不加班公众号会继续更新文章,如果有灵感就每天写新文章,如果没灵感就整理一些过去的文章发布。你每天也抽空过来看一眼文章。
学员的问题,要将标红数据对应的单位名称合并起来。
如果按颜色这个要求来处理,用函数接近于无解,除非用一大堆辅助列。
于是,卢子仔细观察,这个数据源的红色都是最小值,也就是将最小值对应的合并起来。跟她确认,红色的都是最小值。
好,思维一转变,问题就变得简单了。
最小值用MIN,先判断数字是否等于最小值,如果是返回单位名称,也就是第一行,不是的返回空白。这是数组公式,不能直接在单元格显示。不过可以在编辑栏选中,按F9键看到运算结果。
=IF(MIN(B2:H2)=B2:H2,$B$1:$H$1,"")
判断完,再用TEXTJOIN将结果用分隔符号合并,记住按Ctrl+Shift+Enter三键结束。
=TEXTJOIN("、",1,IF(MIN(B2:H2)=B2:H2,$B$1:$H$1,""))
TEXTJOIN语法说明:
=TEXTJOIN("分隔符号",1,公式或区域)
同理,如果要将最大值对应的合并,就将MIN改成MAX就行。
刚好,另外一个学员的问题跟IF有关,顺便也一起讲了。
用今天的日期跟应收日期判断,如果今天的日期大于应收日期,就返回相差的天数,否则返回不计提。公式看起来好像没问题,可是结果却有问题,怎么回事?
一般情况下,月、日显示2位数的都是文本格式的,需要转换成数值格式,最常用的方法就是前面加--。
=IF(TODAY()>--A2,TODAY()-A2,"不计提")
这时,她在原有的基础上,增加了一堆要求。unbilled账龄天数=今天-应收日期;billed账龄天数=今天-开票日期;预收=今天-实际日期,如果大于0就返回相差的天数,否则返回不计提。
应收账款性质不同,返回的日期不同,需要用IF逐一判断。
=IF(D2="unbilled",A2,IF(D2="billed",B2,C2))
借助F列这个辅助列,就可以直接用原来的公式。
=IF(TODAY()>--F2,TODAY()-F2,"不计提")
如果不借助辅助列,就需要将F列的公式替换进去,看起来就比较复杂。
=IF(TODAY()>--IF(D2="unbilled",A2,IF(D2="billed",B2,C2)),TODAY()-IF(D2="unbilled",A2,IF(D2="billed",B2,C2)),"不计提")
如果是我,这个不计提就换成数字0,类似于个税,小于0的返回0,这样公式就可以更简洁。
=MAX(0,TODAY()-IF(D2="unbilled",A2,IF(D2="billed",B2,C2)))
语法说明:
=MAX(0,公式)
等同于
=IF(公式>0,公式,0)
问题每一次细微的变化,都会导致公式相差非常大。
推荐:你会IF函数吗?
国庆假期,你有什么安排?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)