|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 袁振涛 于 2015-10-8 16:10 编辑
题目本来是一个坛友的问题,题目要求提取出所有属于“下”的指定的编号。例如 下:129694-2
后来我给出了自己的解答,但是我给出的正则,只能解决 如果下列情况 下:129694-2/129666-2/107492-6 不存在有两个及以上的相同的满足条件的数据,如果资料如下 下:129694-2/129694-2/129694-2/这样同一个有两个以上符合条件的数据时则无效
现特向大家请教,要求必须用正则表达式。并且尽量不要用分割成例如“129694-1/”“129694-2/”“129694-3/”再进一步判断的方法,那样就大大降低难度了,我也是为了想更好的学习。
- Dim oRegex As Object
- Dim oMatchCollection As Object
- Dim oText As String
- Dim oCount As Integer
- Dim oValue As String
- oCount = 0
- oText = InputBox("请输入要查找的值", "", "3214552-5")
-
- Set oRegex = CreateObject("Vbscript.Regexp")
- oRegex.Global = True
- oRegex.Pattern = "下[::]\s*(?:(?:\d+(?:-\d+)+)/)*?" & oText
-
- For i = 1 To 9
- oValue = Cells(i, "A").Value
- Set oMatchCollection = oRegex.Execute(oValue)
- If oMatchCollection.Count > 0 Then
- MsgBox "第" & i & "行存在" & oMatchCollection.Count & "个符合条件的数据!"
- oCount = oCount + oMatchCollection.Count
- End If
- Next
-
- MsgBox "共有" & oCount & "个满足条件的数据"
复制代码
|
|