ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何分离出文本中的一段

如何分离出文本中的一段

作者:绿色风 分类: 时间:2022-08-18 浏览:84
楼主
xyf2210
Q:如何取文本中间一段?格式形如23。10'43.68"(纬度),得到结果如23。,10',43.68",输入到3个列中。
A:
  1. Sub test()
  2.     Dim mc As Object, arr(), i
  3.     With CreateObject("VBScript.RegExp")
  4.         .Global = True
  5.         .Pattern = "\d+(\.\d+)?[。'""]"
  6.         For Each Rng In Range("a1:a" & [a65536].End(3).Row)
  7.         Set mc = .Execute(Rng.Value)
  8.                 i = i + 1
  9.                 ReDim Preserve arr(1 To 3, 1 To i)
  10.                 arr(1, i) = mc(0): arr(2, i) = mc(1): arr(3, i) = mc(2)
  11.         Next
  12.     End With
  13.     Range("b1").Resize(UBound(arr, 2), 3) = Application.Transpose(arr)
  14. End Sub

自定义函数,弦月加入了容错处理,并且考虑的更充分,谢谢并学习了。
  1. Option Explicit

  2. Function chaif(s As String)
  3.    If Not s Like "*#。*#'*#.#*""*" Then MsgBox "输入的数据无非纬度": chaif = "输入的数据无非纬度": Exit Function
  4.    If Val(Split(s, "。")(0)) > 90 Or Val(Split(Split(s, "。")(1), "'")(0)) > 60 Or Val(Split(Split(s, "'")(1), """")(0)) > 60 Then MsgBox "纬度数据无效": chaif = "纬度数据无效": Exit Function
  5.    Dim mc As Object, arr(1 To 3) As String, i&
  6.    With CreateObject("VBScript.RegExp")
  7.       .Global = True
  8.       .Pattern = "\d{1,2}(\.\d+)?[。'""]"
  9.        Set mc = .Execute(s)
  10.    End With
  11.    
  12.    arr(1) = mc(0): arr(2) = mc(1): arr(3) = mc(2)
  13.    chaif = arr
  14.    Set mc = Nothing: Erase arr
  15. End Function

test.rar
自定义函数(xmyjk).rar
2楼
liuguansky
Val(Split(s, "。")(0)) > 90 Or Val(Split(Split(s, "。")(1), "'")(0)) > 60 Or Val(Split(Split(s, "'")(1), """")(0)) > 60


这一段代码都分离出来了,为什么还要用正则了,再进行循环?
"K哥时髦后遗症"
3楼
xmyjk
前面那段纯属画蛇添足下下
,权当手指操吧

花花真厉害,一句话说俩

免责声明

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

评论列表
sitemap