|
发表于 2016-3-21 13:35
|
显示全部楼层
本楼为最佳答案
原数据模拟有误,与效果不符- Sub Macro1()
- Dim arr, brr, d, i&, j%
- Set d = CreateObject("scripting.dictionary")
- arr = Range("a1").CurrentRegion
- ReDim brr(1 To UBound(arr) - 1, 1 To 1)
- For i = 2 To UBound(arr)
- d(arr(i, 1)) = d(arr(i, 1)) & "," & i
- Next
- For i = 2 To UBound(arr)
- sj = arr(i, 1)
- If sj <> "" And d.exists(sj) Then
- x = Split(Mid(d(sj), 2), ",")
- For j = 0 To UBound(x)
- s = s + 1
- brr(s, 1) = sj
- arr(x(j), 1) = ""
- Next
- ljf = IIf(Len(sj) = 6, "", "-")
- zf = Right(sj, 3) & ljf & Left(sj, 3)
- If d.exists(zf) Then
- y = Split(Mid(d(zf), 2), ",")
- For j = 0 To UBound(y)
- s = s + 1
- brr(s, 1) = zf
- arr(y(j), 1) = ""
- Next
- End If
- End If
- Next
- Range("d2").Resize(UBound(brr)) = brr
- End Sub
复制代码 |
|