前几天有学员问了一个问题,如果他的单元格中包含某些字符,那么在最后一列中就显示有用,否则显示不可用。如下:
当含有carpet时,最后一列中显示有用。
其实,这个函数非常简单,既然是查找某个字符,直接用FIND函数就可以了,然后搭配着IF函数进行判断,结果不就出来了么?
有了这个思路,来看一下另外一个同学碰到的问题,看看该如何解决?表格是这样的:
她的问题是这样的:如果有4个连续的衣服码都有库存,那么就在最后一列中标注为齐码,否则就为断码。比如第2行中的T101031,根据上述说明,结果应该是断码;第3行中的结果就是齐码;
先来分析一下思路,这个题跟开始的那个有点不一样,应该可以说是升级版。
怎么去判断是连续的呢?我们用1表示有,用0表示无,假设将一行中的码数全部连接在一起,只要遇到了“1111”这种四个1在一起的,那么不就是说明这件款式是齐码的么!
根据上述这个思路,得出:
1、先判断库存情况,大于0的转换成1,0的保持不变;
2、将1中的判断情况连接在一起成为文本串;
3、判断有没有“1111”这种情况;
4、根据第3条得出是否是断码或齐码的结果
一起来分步骤写一下公式:
转换为1和0,肯定是IF函数了:
这个利用了数组公式的特性,所以得出的结果是一组数据:
将这些结果连成一串的函数就比较多了,都分享一下吧:
第一个:Microsoft365中的Textjoin函数
公式为:
=TEXTJOIN("",1,IF(B2:G2<>0,1,0))
第一个参数是分隔符的意思,第二个参数是是否忽略空值,第三个参数自然就是要连接的文本了;
缺陷:只有Microsoft 365, Office2019,WPS2019中才有这个函数;
如果不是上述这些版本怎么办?接下来看:
第二个:CONCAT函数
公式为:
=CONCAT(IF(B2:G2<>0,1,0))
参数虽然比Textjoin简单得多,但是如果之间要有连接符的话,还是得用Textjoin。
其实关于连接文本的函数,除了上述两个之外,还有Phonetic函数,它只对文本起作用;Concatenate函数,还有&符号,只是由于本题的限制,这三个都用不上,大家作为了解就好。
接下来,就是判断是否有连续的库存了。这个直接用FIND函数搞定。
公式为:
FIND("1111",CONCAT(IF(B2:G2<>0,1,0)))
这种结果说明没找到,把公式下拉填充一下看看。
很明显,能得到结果的,就表示有连续的4个1,结果就应该是齐码。但是这里直接嵌套IF函数并不能得到我们要的结果,因为IF的判断条件值的结果应该是True或False,所以这一步还需要套一个函数ISERROR直接做判断:
有了结果True和False,最后再用IF函数嵌套就简单多了。
公式为:
=IF(ISERROR(FIND("1111",CONCAT(IF(B2:G2<>0,1,0)))),"断码","齐码")
当然还有比较高级的方法,比如Power Query来解决,也非常的快速和后期一键刷新带来的便利。大家可以自行尝试一下。
网友评论