Option Explicit
Sub TongHopTu31Trang()
Dim Rw As Long, W As Long, J As Long, Ng As Byte, Col As Byte, Tmr As Double
Dim TmpArr(), Dic1 As Object, Sh As Worksheet
Set Dic1 = CreateObject("Scripting.Dictionary")
ReDim Arr(1 To 5000, 1 To 161): Tmr = Timer()
For Each Sh In ThisWorkbook.Worksheets
If IsNumeric(Sh.Name) Then
TmpArr() = Sh.Range(Sh.[c9], Sh.[c9].End(xlDown)).Resize(, 38).Value
Ng = CByte(Sh.Name)
If Ng > 25 Then
Col = (Ng - 25) * 5 + 2
Else
Col = 32 + Ng * 5
End If
For J = 1 To UBound(TmpArr())
If Not Dic1.exists(TmpArr(J, 1)) Then
W = W + 1: Arr(W, 1) = TmpArr(J, 1)
Arr(W, 2) = TmpArr(J, 2): Dic1.Add TmpArr(J, 1), W
Arr(W, Col) = TmpArr(J, 33): Arr(W, Col + 1) = TmpArr(J, 34)
Arr(W, Col + 2) = TmpArr(J, 35): Arr(W, Col + 3) = TmpArr(J, 36)
Arr(W, Col + 4) = TmpArr(J, 38)
Else
Arr(Dic1.Item(TmpArr(J, 1)), Col) = TmpArr(J, 33)
Arr(Dic1.Item(TmpArr(J, 1)), Col + 1) = TmpArr(J, 34)
Arr(Dic1.Item(TmpArr(J, 1)), Col + 2) = TmpArr(J, 35)
Arr(Dic1.Item(TmpArr(J, 1)), Col + 3) = TmpArr(J, 36)
Arr(Dic1.Item(TmpArr(J, 1)), Col + 4) = TmpArr(J, 38)
End If
Next J
End If
Next Sh
If W Then
Sheets("BCC").[b8].Resize(W, 161).Value = Arr()
Sheets("BCC").[g1].Value = Timer() - Tmr
End If
End Sub