thầy BaTe sửa giùm em đoạn code chỉ cần lọc 1 mã hiệu qua sheet CaMay và không lọc mã hiệu 9999 (Máy khác).
Ở bài #1 đâu có nói là mã trùng chỉ lấy 1
Còn vụ mã 9999 cũng không nói là không lấy.
Từ bảng sheet TLuongDT em muốn tổng hợp các máy có trong cột K sheet TLuongDT (mã hiệu ở cột Q) qua sheet CaMay và dữ liệu bên sheet CaMay được lấy và tính như sau:
+ Cột D (sheet ca máy) = cột E sheet Gia VLieu
+ Cột E (sheet ca máy) = cột F sheet Gia VLieu
+ Cột J (sheet ca máy) = cột D sheet NhanCong
+ Cột M (sheet ca máy) = cột D sheet Gia VLieu
Thử thay Sub cũ bằng Sub này coi sao:
[GPECODE=vb]Public Sub GPE()Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, May As String, Tem As Variant, tArr()
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("TLuong DT")
sArr = .Range(.[K10], .[K65536].End(xlUp)).Resize(, 7).Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 14)
May = Sheets("CaMay").[B9].Value2
tArr = Sheets("CaMay").Range("A9:N9").FormulaR1C1
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 7)
If sArr(I, 1) Like May & "*" Then
If Tem <> Empty And Tem <> 9999 Then
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add sArr(I, 7), K
dArr(K, 1) = K
dArr(K, 2) = sArr(I, 7)
dArr(K, 3) = sArr(I, 1)
For J = 6 To 14
If tArr(1, J) <> Empty Then
dArr(K, J) = tArr(1, J)
End If
Next J
End If
End If
End If
Next I
With Sheets("Gia VLieu")
sArr = .Range(.[A6], .[A6].End(xlDown)).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), 4) = sArr(I, 5)
dArr(Dic.Item(Tem), 5) = sArr(I, 6)
dArr(Dic.Item(Tem), 13) = sArr(I, 4)
End If
Next I
With Sheets("NhanCong")
sArr = .Range(.[A6], .[A65536].End(xlUp)).Resize(, 4).Value2
End With
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 1)
If Dic.Exists(Tem) Then
dArr(Dic.Item(Tem), 10) = sArr(I, 4)
End If
Next I
With Sheets("CaMay")
.[A10:N10000].ClearContents
.[A10:N10000].Borders.LineStyle = xlNone
If K Then
.[A10].Resize(K, 14) = dArr
.[A10].Resize(K, 14).Borders.LineStyle = xlContinuous
End If
End With
Set Dic = Nothing
End Sub[/GPECODE]