Anh xem lại hộ em sheet "TDOI" K3, K12, K16,K17 chẳng hạn, em muốn khi có cùng tên hoặc cùng tuyến thì xếp gọn 1 chỗ - Xếp hết người thứ nhất (trong người thứ nhất thì hết tuyến 1 rồi đến tuyến 2) rồi mới đến người thứ 2 (các tuyến của người thứ 2) rồi đến người thứ 3(các tuyến người thứ 3).
Sheet XL em muốn bỏ cột A đi có được không?
Hổng "giỡn" à nghe.
Đọc lại cái này xem:
Phương pháp 1: Sau khi hết 1 tuyến sẽ tự động chèn thêm 1 dòng vào cuối của tuyến đó rồi tính tổng cho tuyến đó
Bi giờ thì đòi tổng theo người.
[GPECODE=vb]Public Sub GPE()
Application.ScreenUpdating = False
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, X As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("NHAP")
sArr = .Range(.[B3], .[C65536].End(xlUp)).Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 13)
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = K
dArr(K, 2) = Tem
dArr(K, 6) = sArr(I, 2)
dArr(K, 7) = "=Max(RC[-2]-RC[-1],0)"
dArr(K, 8) = "=Max(RC[-2]-RC[-3],0)"
dArr(K, 9) = 1
Else
dArr(Dic.Item(Tem), 6) = dArr(Dic.Item(Tem), 6) + sArr(I, 2)
dArr(Dic.Item(Tem), 9) = dArr(Dic.Item(Tem), 9) + 1
End If
Next I
With Sheets("XL")
sArr = .Range(.[C3], .[C65536].End(xlUp)).Resize(, 6).Value2
End With
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1)
If Dic.Exists(Tem) Then
dArr(Dic.Item(Tem), 3) = sArr(I, 2)
dArr(Dic.Item(Tem), 4) = sArr(I, 3)
dArr(Dic.Item(Tem), 10) = sArr(I, 4)
dArr(Dic.Item(Tem), 11) = sArr(I, 5)
dArr(Dic.Item(Tem), 12) = sArr(I, 6)
End If
Next I
With Sheets("TDOI")
With .[A3:L10000]
.ClearContents
.Interior.ColorIndex = 0
.Borders.LineStyle = xlNone
.Font.Bold = False
.Font.ColorIndex = 0
End With
If K Then
.[A3].Resize(K, 12) = dArr
.[B3].Resize(K, 11).Sort Key1:=.[J3], Key2:=.[K3]
sArr = .[A3:L3].Resize(K + 1).Value2
'--------------------------- Them cac dong tong, to mau
ReDim dArr(1 To K * 2, 1 To 12)
K = 0
For I = 1 To UBound(sArr, 1) - 1
K = K + 1: X = X + 1
For J = 1 To 12
dArr(K, J) = sArr(I, J)
Next J
If sArr(I, 10) <> sArr(I + 1, 10) Then
K = K + 1
dArr(K, 4) = .[M1].Value2
For J = 5 To 8
dArr(K, J) = "=Sum(R[-" & X & "]C:R[-1]C)"
Next J
With .Range("A" & K + 2).Resize(, 12)
.Interior.ColorIndex = 6
.Font.Bold = True
.Font.ColorIndex = 3
End With
X = 0
End If
Next I
.[A3].Resize(K, 12) = dArr
.[A3].Resize(K, 12).Borders.LineStyle = xlContinuous
End If
'------------------------------
End With
Set Dic = Nothing
Application.ScreenUpdating = True
End Sub[/GPECODE]
"Giỡn" nhiều quá, chạy à.