欢迎转发和点一下“在看”,文末留言互动!
置顶公众号或设为星标及时接收更新不迷路
小伙伴们好,今天来和大家分享一道VBA的题目。
我们都遇到过这样的题目:在一个字符串中由分隔符分为多个词组,现在要统计一下在这个字符串中有多少个词组,就像下面这道题目。
这道题目非常简单,是函数入门的基础题目,利用SUBSTITUTE函数和LEN函数就可以解决。但如何使用VBA来做这道题目呢?
01
函数法
函数法的基本思路是,词组由空格分隔,那么词组的数量就比空格的数量多一个。如何确定空格的数量呢?将空格替换为空“”,使用替换前的字符串长度减去替换后的字符串长度,就是空格的数量了。
在单元格A4中输入下列公式,回车即可。
=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1
公式就是按照上面讲的逻辑思路书写的,不再赘述了。
02
VBA法
用VBA的逻辑方式思考这道题目,该如何处理呢?
完整代码如下:
Sub test()
Dim i As Integer, s As String
s = Range("A1")
Do While InStr(s, " ") > 0
s = Mid(s, InStr(s, " "))
s = Trim(s)
i = i + 1
Loop
i = i + 1
[A4] = i
End Sub
还是要从空格入手。
s = Range("A1")
令变量s的初始值为单元格A1的值
Do While InStr(s, " ") > 0
s = Mid(s, InStr(s, " "))
s = Trim(s)
i = i + 1
Loop
使用Instr函数来查找空格。Instr就相当于工作表函数FIND函数。
当找到第一个空格时,Mid函数提取该空格后所有的字符串,并将其赋值给变量s
再利用Trim函数去除字符串左前端的空格,再次赋值给变量s
同时令变量i累计加1。
多次循环直至找打最后一个空格。
i = i + 1
[A4] = i
由于这是只是计算了空格的数量,而实际词语数要比空格多一个,所以再加上1。最后结果输出即可。
本期内容练习文件提取方式:
链接: https://pan.baidu.com/s/1jlGErzMFr-_aKorQp_vulQ?pwd=3pyu 提取码: 3pyu
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
我就知道你“在看”