分享

不要小看这道题目哦,一不小心你就要犯错了!

 EXCEL应用之家 2022-03-30


送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

【置顶公众号】或者【设为星标】及时接收更新不迷路



小伙伴们好,今天和大家分享一个文本查找的问题。这个问题虽然看起来简单,但其实有一个隐藏的陷阱,同时也有一定的代表性,所以分享出来和大家一同探讨。

题目是这样的。要计算出E列中的文本在B、C两列中出现的次数或频率。



思考十秒钟……


01

有朋友会讲了,这有什么难的,利用FIND函数不就可以了嘛!



貌似看起来答案是对的,但是稍等,请看单元格G6,结果和标准答案不一致。为什么呢?

原来,原因出在FIND函数这里。

FIND函数的作用是查找字符串在另一个字符串中的位置。当它查找字符串“Air”时,它会返回“Air”在源数据中所有包含“Air”的字符串中的位置信息,因此答案就会出错了。

这种情况下还没有特别好的办法。只能是在字符串前后再加上另外一些字符进行区别。


02

思路有了后,公式书写就简单了。



在单元格G2中输入公式“=SUMPRODUCT((SUBSTITUTE(" "&$B$2:$C$11&" "," "&E3&" ","")<>" "&$B$2:$C$11&" ")*1)”,三键回车并向下拖曳即可。

思路:

  • 由于在源数据和查找数据前后都加了空格,例如" "&$B$2:$C$11&" ",因此就不会出现上面提到的那种情况了

  • 利用SUBSTITUTE函数在源数据中替换,凡是源数据中包含目标字符串的,都会被空格替换掉

  • 替换后的结果在和源数据进行比较,前后两对数据不相同的,即认为是查找到,计数一次

  • 最后利用SUMPRODUCT函数汇总即可


03

上面这个公式太长了,有没有更短一些的公式?有!



其实就是利用前面我们介绍过的FIND函数就可以了。怎样,公式书写起来非常简单明了吧?

不过,上面介绍的这些方法都有一些BUG。比如说,如果将单元格C2中的ABX改为Air,公式的结果是不会改变的。



这其中的原因是,FIND函数只负责找到,至于目标字符串中包含几个要查找的查找值,它不负责。

因此如果在一个字符串中包含一个以上的查找字符串,我们还需要修改我们的公式。这次,为了看起来相对比较直观,我们使用“[”和“]”来代替空格。



在单元格G2中输入公式“=SUM((LEN(SUBSTITUTE("["&$B$2:$C$11&"]"," ","]["))-LEN(SUBSTITUTE(SUBSTITUTE("["&$B$2:$C$11&"]"," ","]["),"["&E3&"]","")))/LEN("["&E3&"]"))”,三键回车并向下拖曳即可。


好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

我就知道你“在看”

推荐阅读

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多