分享

如何计算Excel单元格内关键字出现的次数?——分享2种方法

 Excel实用知识 2022-04-19
图片

如图,想计算每个单元格中“函数”二字出现的次数,以及整个一列中“函数”出现的总次数,如何计算?

相信大家会不约而同的想到Countif函数——条件计数。

但如果你真的试过了,就会发现根本行不通。为什么?因为Countif函数计算的是满足条件的单元格个数,而不是单元格内的条件的个数。      

这一点必须要理解透彻,初学者很容易混淆。

比如,我们要计算B列中包含“函数”二字的标题有多少个,这时候相当于计算满足条件的单元格的数量,因此公式可以这么写:

=COUNTIF($B$3:$B$24,'*'&'函数'&'*'),结果是13。

而现在,我们要计算的是如“函数”两个字出现的次数,怎么办呢?今天分享两种方法。

01  常规函数计算

图片

直接给出公式:

=(LEN(B3)-LEN(SUBSTITUTE(B3,'函数','')))/LEN('函数')

看着很长,实际意思很简单,就是——用单元格中文本的总长度,即LEN(B3),减去把关键字“函数”剔除后的长度(用Substitute将关键字替换为空)。相减的结果不就是关键字的总长度吗?

最后用关键字的总长度除以单个关键字的长度(LEN('函数')),就是关键字出现的次数。

如果对LEN、SUBSTITUTE函数的应用不熟悉,可以看我的函数课程,已更新至30节。

▲ VIP/SVIP免费学

02  自定义函数BGStrCount


Excel中虽然提供了大量的函数,但是并不是所有的问题都有对应的函数,能够直接解决问题。

因此,对于很多实际问题,在没有更好的方法之前,我们不得已只能把公式写得又长又晦涩,就像前面那串公式,看半天才能理解。

对于这种情况,如果有一定的VBA知识,可以快速的写一个自定义函数,不用弯弯绕绕,一个函数直接搞定!

第1步:在Excel中按ALT+F11,打开VBE,并新建一个模块;

第2步:在模块中编写或复制以下代码:

Function BGStrCount(ByVal Rng As String, Str As String)

    arr = Split(Rng, Str)

    BGStrCount = UBound(arr)

End Function

代码中,利用了文本的Split方法,用关键字进行分隔,分隔后的数组的上限即为关键字出现的次数。

第3步:写完代码后,回到工作表就可以使用定义的函数了。

图片

公式超简单:

=BGStrCount(B3,'函数')

除了计算单个单元格内关键字的次数,还可以计算选区中关键字的次数。例如在D3的合并单元格中计算整个B列中“函数”出现的次数,公式可以这么写:

=BGStrCount(CONCAT(B3:B24),'函数')

首先,用CONCAT函数,将B3:B24区域的文本进行连接,连接成一个长文本。然后,用自定义函数BGStrCount计算长文本中“函数”出现的次数。

定义好的自定义函数如果想在所有文档中都可以调用,需要另存为加载项,在函数课的“加餐3:自定义加载项”一节中有介绍。

学好VBA,是开发自定义函数的关键。如果你想快速入门和进阶VBA,推荐你我最新录制的30节VBA课程,可能是少有的能帮你在短时间内掌握VBA的一门课程。


▲ VIP/SVIP免费学


图片
▲ Office安装效果
图片
▲ WPS安装效果

《Excel超能力》用户手册


作者:徐军泰
——Excel培训师 & 私教,企业效率顾问,《左手数据,右手图表》作者,《Excel超能力》效率插件作者——200+功能,节省95%的操作时间

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多