送人玫瑰,手有余香,请将文章分享给更多朋友 动手操作是熟练掌握EXCEL的最快捷途径! 【置顶公众号】或者【设为星标】及时接收更新不迷路 小伙伴们好,今天和大家分享一个文本查找的问题。这个问题虽然看起来简单,但其实有一个隐藏的陷阱,同时也有一定的代表性,所以分享出来和大家一同探讨。 题目是这样的。要计算出E列中的文本在B、C两列中出现的次数或频率。 思考十秒钟…… 有朋友会讲了,这有什么难的,利用FIND函数不就可以了嘛! 貌似看起来答案是对的,但是稍等,请看单元格G6,结果和标准答案不一致。为什么呢? 原来,原因出在FIND函数这里。 FIND函数的作用是查找字符串在另一个字符串中的位置。当它查找字符串“Air”时,它会返回“Air”在源数据中所有包含“Air”的字符串中的位置信息,因此答案就会出错了。 这种情况下还没有特别好的办法。只能是在字符串前后再加上另外一些字符进行区别。 思路有了后,公式书写就简单了。 在单元格G2中输入公式“=SUMPRODUCT((SUBSTITUTE(" "&$B$2:$C$11&" "," "&E3&" ","")<>" "&$B$2:$C$11&" ")*1)”,三键回车并向下拖曳即可。 思路:
上面这个公式太长了,有没有更短一些的公式?有! 其实就是利用前面我们介绍过的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操作问题时不再迷茫无助 我就知道你“在看” |
|