|
规则 "1.若项目编号及内容1,内容2,内容3全部完全相同,将内容5,6,7放在一行.此时如果内容4相同,则取其中任意一个;若不同,则将内容合并。
2.若内容1,2,3中有任意一个不同,则分为多行"
原内容
项目编号 内容1 内容2 内容3 内容4 内容5 内容6 内容7
A 你好 我是1 断裂 牛 3.5 - -
A 你好 我是1 断裂 牛 - 7.5 -
B 橘子 橙子 苹果 猪 2 4 -
A 你好 我是1 断裂 牛 - - 10
C 收音机 洗衣机 橱柜 桌子 2 - -
C 收音机 洗衣机 电脑 椅子 - 4 -
B 橘子 橙子 苹果 羊 - - 3
目标内容
项目编号 内容1 内容2 内容3 内容4 内容5 内容6 内容7
A 你好 我是1 断裂 牛 3.5 7.5 10
B 橘子 橙子 苹果 猪.羊 2 4 3
C 收音机 洗衣机 橱柜 桌子 2 - -
C 收音机 洗衣机 电脑 椅子 - 4 -
zhaoguang0920 发表于 2015-5-25 11:33
您好,您的这个我打开之后显示macro unavailable。您能把代码粘过来吗,谢啦
alt+f11查看代码 - Sub Macro1()
- Dim arr, brr, d, i&, j%, s&, n&
- Set d = CreateObject("scripting.dictionary")
- arr = [a5:h12]
- ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
- For i = 1 To UBound(arr)
- zf = arr(i, 1) & arr(i, 2) & arr(i, 3) & arr(i, 4)
- If Not d.exists(zf) Then
- s = s + 1
- d(zf) = s
- For j = 1 To UBound(arr, 2)
- brr(s, j) = arr(i, j)
- Next
- Else
- n = d(zf)
- If InStr(brr(n, 5), arr(i, 5)) = 0 Then brr(n, 5) = brr(n, 5) & "." & arr(i, 5)
- For j = 6 To UBound(arr, 2)
- If IsNumeric(arr(i, j)) Then brr(n, j) = arr(i, j)
- Next
- End If
- Next
- Range("a17").Resize(s, UBound(brr, 2)) = brr
- End Sub
复制代码
|
|