- ' 只使用数组的解决方案(不使用字典)
- Sub test()
- Const SEP = "、"
- arr = Range("a1").CurrentRegion
- ReDim brr(1 To 1000, 1 To 5)
- ColCnt = UBound(arr, 2)
- For i = 2 To UBound(arr)
- crr = Split(arr(i, 3), SEP)
- For k = 0 To UBound(crr)
- m = m + 1
- brr(m, 4) = crr(k)
- For n = 1 To ColCnt - 2
- brr(m, n) = arr(i, n)
- Next n
- brr(m, ColCnt + 1) = arr(i, ColCnt)
- sname = arr(i, ColCnt - 1)
- If Right(sname, Len(crr(k))) = crr(k) Then
- sKey = SEP & crr(k)
- Else
- sKey = crr(k) & SEP
- End If
- brr(m, ColCnt - 1) = Replace(sname, sKey, "", , , vbTextCompare)
- Next k
- Next i
- [g20].Resize(m, UBound(brr, 2)) = brr
- End Sub
复制代码 |