VBA實現相同行合併

幫人搗鼓了個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

相關文章
相關標籤/搜索