幫人搗鼓了個VBA代碼用來實現多行合併,具體需求爲:列2/列3/列4 相同的狀況下,則對應的行合併爲一行,且列1用空格隔開,列5則相加;spa
(對大多數辦公室職員,VBA還算是提升效率的一個利器吧)code
最終效果以下:blog
1 Sub test() 2 Dim r%, i% 3 Dim arr, brr 4 Dim d As Object 5 Set d = CreateObject("scripting.dictionary") 6 With Worksheets("sheet1") 7 r = .Range("a1").End(xlDown).Row 8 arr = .Range("a2:e" & r) 9 For i = 1 To UBound(arr) 10 If Not d.exists(arr(i, 2) & arr(i, 3) & arr(i, 4)) Then 11 ReDim brr(1 To UBound(arr, 2)) 12 For j = 1 To UBound(arr, 2) 13 brr(j) = arr(i, j) 14 Next 15 Else 16 brr = d(arr(i, 2) & arr(i, 3) & arr(i, 4)) 17 brr(1) = brr(1) & " " & arr(i, 1) 18 brr(5) = brr(5) + arr(i, 5) 19 20 End If 21 d(arr(i, 2) & arr(i, 3) & arr(i, 4)) = brr 22 Next 23 .Range("h2").Resize(d.Count, UBound(brr)) = Application.Transpose(Application.Transpose(d.items)) 24 End With 25 End Sub
代碼以字典做爲實現功能,把列二、列三、列4合併起來做爲Key值,列一、列5爲Value值,列1則用空格合併,列5則相加。ip