|
本帖最后由 hahada 于 2014-4-8 22:58 编辑
Sub test()
Dim reg, n, st1, st2, arr, i&
n = Range("e65536").End(3).Row
If n < 5 Then Exit Sub
n = n + 3 - Val(Right(Range("e" & n), 1))
arr = Range("e5:e" & n)
Set reg = CreateObject("vbscript.regexp")
With reg
.Global = True
.Pattern = "\d+($|\n)"
For i = 1 To UBound(arr)
If arr(i, 1) <> "" Then
st1 = .Replace(arr(i, 1), "") 替换为空是什么意思
st2 = .Execute(arr(i, 1))(0) Execute是什么意思
n = Val(st2)
Else
n = n + 1
arr(i, 1) = st1 & Format(n, WorksheetFunction.Rept("0", Len(st2)))
End If
Next
End With
[e5].Resize(UBound(arr)) = arr
End Sub
st1 = .Replace(arr(i, 1), "") 比如:arr(i,1)的值为:”今天下午收入12456“ 在这个字符串中,符合pattern模式的匹配为: "12456” 把它替换为"",得到新的字符串:“今天下午收入"。
如果arr(i,1)的值为:“今天下午收入12456(换行符)
昨天下午收入11425(换行符)
前天下午收入147898(结尾)"
st1 = .Replace(arr(i, 1), "") 这时候所有符合pattern的模式都将替换为空,得到“今天下午收入昨天下午收入前天下午收入"
|
|