前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA代码库07:功能强大的字符替换函数

VBA代码库07:功能强大的字符替换函数

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

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

excelperfect

下面的自定义函数:TranslateString函数,可以一次将指定的多个字符替换成相对应的匹配字符。

TranslateString函数代码如下:

'---------------------------------------------------------

'将文本中指定的字符替换成对应的字符

'参数strInput:要修改的文本字符串

'参数strMapInput:查找并要被替换掉的字符

'参数strMapOutput:0个或多个字符,与strMapInput中字符对应,

'若其比strMapInput短,则以其最后一个字符在其末尾填充至与

'strMapInput长度相同

'参数CaseSensitive:可选,默认为True表示区分大小写

'---------------------------------------------------------

Function TranslateString(ByVal strInputAs String, _

ByVal strMapInput As String, _

ByVal strMapOutput As String, _

Optional CaseSensitive As Boolean = True) As String

Dim i As Integer

Dim iPos As Integer

Dim strChar As String * 1

Dim strOutput As String

Dim iMode As Integer

'是否有要修改的文本字符串

If Len(strMapInput) > 0 Then

'是否区分大小写

If CaseSensitive Then

iMode = vbBinaryCompare

Else

iMode = vbTextCompare

End If

'确保strMapOutput与strMapInput指定的字符串有相同数量的字符

'保证了strMapInput中的字符能够被替换成strMapOutput对应字符

If Len(strMapOutput) > 0 Then

strMapOutput = Left$(strMapOutput& _

String(Len(strMapInput),Right$(strMapOutput, 1)), _

Len(strMapInput))

End If

'遍历要修改的文本字符串

For i = 1 To Len(strInput)

'依次取其中的每个字符

strChar = Mid$(strInput, i, 1)

'在strMapInput中查找是否存在这个字符

iPos = InStr(1, strMapInput,strChar, iMode)

'如果找到

If iPos > 0 Then

'在strMapOutput查找对应的匹配字符并添加到末尾

'即便strMapOutput为空,Mid函数也能处理

strOutput = strOutput &Mid$(strMapOutput, iPos, 1)

Else

'没有找到,则添加原字符到末尾

strOutput = strOutput &strChar

End If

Next i

End If

TranslateString = strOutput

End Function

下面来测试TranslateString函数。

下面的代码:

TranslateString(strText, "()-", "")

可以将(0717)676-1111转换成07176761111。如下图1所示。

图1

下面的代码:

TranslateString(strText, ",:!", "")

可以将"我,的微信公众号:完美Excel!"转换成"我的微信公众号完美Excel"。如下图2所示。

图2

下面的代码:

TranslateString(strText,"ABCDEFGHIJKLMNOPQRSTUVWXYZ", "00111222333444555666777889")

可以将086-1000-EXCELFANS转换成086-1000-181142046。如下图3所示。

图3

下面是代码的图片版:

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档