没考虑这种情况,不过这容易,添加一句即可:
Sub TEST()
ARR = Range("B2:B" & Range("B65536").End(3).Row)
ReDim BRR(1 To UBound(ARR))
For I = 1 To UBound(ARR)
C = Split(ARR(I, 1), " ")
M = C(0)
For J = 1 To UBound(C)
If Right(C(J), Len(C(J)) - 1) * 1 <> Right(C(J - 1), Len(C(J - 1)) - 1) * 1 + 1 Then
If BS = 1 Then
M = M & "-" & C(J - 1) & " " & C(J)
BS = 0
Else
M = M & " " & C(J)
End If
Else
If J = UBound(C) Then M = M & "-" & C(J)
BS = 1
End If
Next
ARR(I, 1) = M
Next
Range("C2:C65536").ClearContents
Range("C2").Resize(UBound(ARR), 1) = ARR
End Sub