前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA实用小程序55: 计算一个或多个分隔符将字符串分隔成的文本块数

VBA实用小程序55: 计算一个或多个分隔符将字符串分隔成的文本块数

作者头像
fanjy
发布2019-07-19 16:15:26
1.7K0
发布2019-07-19 16:15:26
举报
文章被收录于专栏:完美Excel完美Excel

学习Excel技术,关注微信公众号:

excelperfect

下面的自定义函数:CountBlock函数,可以根据提供的一个或多个分隔符进行查找,得到这些分隔符将字符串分隔成的文本块数。

CountBlock函数的代码:

代码语言:javascript
复制
' ----------------------------------------
'参数strText:给出的文本字符串
'参数strDelimiter:文本字符串中的分隔符
'-----------------------------------------
Function CountBlock(ByVal strText AsString, _
       ByVal strDelimiter As String) As String
   Dim strChar As String * 1
    '如果没有提供文本字符串
   If Len(strText) = 0 Then
       CountBlock = 0
   Else
    '提取第1个分隔符
       strChar = Left$(strDelimiter, 1)
        '如果有多个分隔符,则替换成第1个分隔符
       If Len(strDelimiter) > 1 Then
            strText = TranslateString(strText,strDelimiter, strChar)
       End If
        '计算第1个分隔符数量并加1得到分隔的文本块数
       CountBlock = iCountString(strText, strChar) + 1
   End If
End Function

代码中,调用了TranslateString函数,将所有不同的分隔符转换为所提供的分隔符strDelimiter中的第一个分隔符:

代码语言:javascript
复制
strChar = Left$(strDelimiter, 1)
'如果有多个分隔符,则替换成第1个分隔符
If Len(strDelimiter) > 1 Then
   strText = TranslateString(strText, strDelimiter, strChar)
End If

其中的TranslateString函数来源于《VBA代码库07:功能强大的字符替换函数》。例如,如果调用:

CountBlock("完美:Excel!微信公众号",": !")

则TranslateString函数将strText转换成:

完美:Excel:微信:公众号

然后,代码:

iCountString(strText, strChar) + 1

使用iCountString函数统计出strText中的strChar(即:)的数量,加1,得到文本字符串中被分隔符分成的文本块数,示例中得到4。

其中的iCountString函数来源于《VBA实用小程序54:计算字符串中指定子字符串出现的次数》。

上述测试代码及结果如图1所示。

图1

下面的示例代码:

CountBlock("Thisis a good test", " ")

返回5。如下图2所示。

图2

CountBlock函数很巧妙,它没有像通常那样遍历,而是将文本字符串中不同的分隔符统一转换成分隔符参数中的第1个分隔符,然后通过计算这个分隔符的数量来得出分隔的块数。

程序代码的图片版如下:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档