|
- Sub demo()
- On Error Resume Next
- 'Dim reg As New RegExp
- Dim reg As Object
- Set reg = CreateObject("vbscript.regexp")
- Dim i As Integer, sr, m, mat, j As Integer, arr, hr, brr, z1, z2, fr
- arr = Range("a6:b14")
- With reg
- .Global = True
- .Pattern = "\d+\-\d+|\d+"
- For i = 1 To UBound(arr)
- Set mat = .Execute(Cells(i + 5, "f").Value)
- For Each m In mat
- If InStr(m, "-") > 0 Then
- For j = Val(Mid(m, 1, InStr(m, "-") - 1)) To Val(Mid(m, InStr(m, "-") + 1, Len(m)))
- sr = sr & "/" & j
- Next j
- Else
- sr = sr & "/" & m
- End If
- Next m
- sr = sr & "/" & Cells(i + 5, "i").Value
- For j = arr(i, 1) To arr(i, 2)
- If InStr(sr, j) = 0 Then
- hr = hr & "/" & j
- If Mid(hr, 1, 1) = "/" Then hr = Mid(hr, 2, Len(hr))
- End If
- Next j
- If InStr(hr, "/") > 0 Then
- brr = VBA.Split(hr, "/")
- z1 = brr(0)
- fr = z1
- For j = 0 To UBound(brr)
- If j = UBound(brr) - 1 Then
- If brr(j + 1) - brr(j) = 1 Then
- fr = z1 & "-" & brr(j + 1)
- Else
- z1 = fr
- fr = z1 & "/" & brr(j + 1)
- End If
- Exit For
- End If
- If brr(j + 1) - brr(j) = 1 Then
- fr = z1 & "-" & brr(j + 1)
- Else
- z1 = fr & "/" & brr(j + 1)
- fr = z1
- End If
- Next j
- Cells(i + 5, "l") = fr
- Else
- Cells(i + 5, "l") = hr
- End If
-
- sr = "": hr = ""
- Next i
- End With
- End Sub
复制代码 用这个,确实有点小问题,第38行代码加一个z1=fr就可以了,你再试试
|
|