ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何编写返回字符串中首个汉字与最后一个汉字所在位置的自定义函数呢?

如何编写返回字符串中首个汉字与最后一个汉字所在位置的自定义函数呢?

作者:绿色风 分类: 时间:2022-08-17 浏览:100
楼主
0Mouse
Q:如何编写返回字符串中首个汉字与最后一个汉字所在位置的自定义函数呢?
示例:

 
A:可以采用正则表达式,也可以使用循环判断,代码如下:
  1. '自定义函数1:正则表达式(xmyjk)
  2. Function wz(s As String) As String
  3.     Dim mchs, mch
  4.     With CreateObject("vbscript.regexp")
  5.         .Global = True
  6.         .Pattern = "[\u4e00-\u9fa5]"
  7.         Set mchs = .Execute(s)
  8.     End With
  9.     wz = "第一个中文是:" & mchs(0).Value & ",位置:" & mchs(0).firstindex + 1 & _
  10.         ",最后一个中文是:" & mchs(mchs.Count - 1).Value & ",位置:" & mchs(mchs.Count - 1).firstindex + 1
  11. End Function
用法:在B2单元格内输入“=wz(A2)”下拉。
  1. '自定义函数2:循环判断
  2. Function HZ(rg As String, Optional lx As Boolean = False) As Byte    'Optional代表“可选的”,lx参数缺省值为False
  3. Dim i As Integer
  4. If lx Then    '如果参数lx为True
  5.     For i = Len(rg) To 1 Step -1    '逆循环
  6.         If Mid(rg, i, 1) Like "[一-龥]" Then
  7.             HZ = i
  8.             Exit For
  9.         End If
  10.     Next
  11. Else    '如果参数lx为False
  12.     For i = 1 To Len(rg)    '正循环
  13.         If Mid(rg, i, 1) Like "[一-龥]" Then
  14.             HZ = i
  15.             Exit For
  16.         End If
  17.     Next
  18. End If
  19. End Function
用法:在B3输入“=Hz(A3,FALSE)”或者“=Hz(A3)”下拉,在C2输入“=Hz(A3,TRUE)”下拉。
附件:
返回字符串中首个汉字与最后一个汉字所在位置的自定义函数.rar
2楼
い卋玑┾宝珼
学习ING
3楼
hzpqu
不错不错,楼主是个绝对高手
4楼
CheryBTL
啊?这个也可以自定义函数? 跟着老师学习VBA
5楼
老糊涂
学习ING

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap