昨天我们留了个练习题:
判断A1中是否包含B1单元格字符串中的字符,可以是B1中的任意字符,如果是判断B1中某个或者是某几个相连的字符,那好办,但是现在是任意一个或者是任意几个,没有顺序之分。
所以我们想到了把B1中的字符串打散,然后用find函数在A1里寻找,如果返回数字,那说明存在,如果返回错误值,那说名不存在。
打散的方法,我最近的视频教程里讲mid时已经讲过了,这里直接写公式:
查找打散后的字符在A1中的位置:
=find(MID(B1,{1,2,3},1),A1),结果返回{1,2,3},各个字符在A1中都存在,那么我们统计数字的个数就知道了存在几个字符了,所以外层加个count。
=count(find(MID(B1,{1,2,3},1),A1))
这时候就得出了A1中包含B1中的字符数,这道题要求包含1个或者2个就显示正确,否则显示错误,所以用if判断下就可以。
=IF(AND(COUNT(FIND(MID(B1,{1,2,3},1),A1))>0,COUNT(FIND(MID(B1,{1,2,3},1),A1))<3),'正确','错误')
上面的公式中:COUNT(FIND(MID(B1,{1,2,3},1),A1))的结果大于0小于3即可,那也就是说等于1或者2就可以,所以我们可以简化下下公式:
COUNT(FIND(MID(B1,{1,2,3},1),A1))={1,2}
如果COUNT(FIND(MID(B1,{1,2,3},1),A1))的结果等于0或者3,那么结果就是{false,false},把逻辑值转化为数字后求和就是0,否则,如果结果为1或者2,那就得到{true,false}或者是{false,true},转化为数字求和就是1,所以就有了下面的简化:
=IF(SUM(--(COUNT(FIND(MID(B1,{1,2,3},1),A1))={1,2}))=1,'正确','错误')
在写公式时能灵活应用数组还是很爽的,所以我们还是很有必要多学学用数组的方式去写公式。