Option Explicit
Public Sub s_Gpe()
Dim Dic As Object, Ws As Worksheet, sArr(), dArr(), tArr()
Dim I As Long, J As Long, K As Long, R As Long, R2 As Long, Txt As String
Set Dic = CreateObject("Scripting.Dictionary")
Dic.CompareMode = vbTextCompare
sArr = Sheets("LoaiTru").Range("A1").CurrentRegion.Value 'Mang du lieu sheet LoaiTru'
R = UBound(sArr)
For Each Ws In ThisWorkbook.Worksheets ' Duyet tuwng sheet trong file'
If Ws.Name <> "LoaiTru" Then
If IsNumeric(Left(Ws.Name, 1)) Then '--Xac dinh ten sheet hop le'
Dic.RemoveAll 'Xoa tat ca Keys trong Dic'
With Ws
If .Range("H100000").End(xlUp).Row > 1 Then ' Cac sheet Thang phai co it nhat 1 dong du lieu'
tArr = .Range("H1", .Range("H100000").End(xlUp)).Value
R2 = UBound(tArr)
ReDim dArr(1 To R2, 1 To 1)
J = Left(Ws.Name, 2) * 2 - 1 ' Xac dinh cot se lay du lieu trong sheet LoaiTru'
For I = 1 To R ' Nap du lieu vao Dic'
If sArr(I, J) <> Empty Then Dic.Item(sArr(I, J)) = sArr(I, J + 1)
Next I
For I = 2 To R2 ' Duyet tung dong trong cac sheet Thang'
Txt = tArr(I, 1)
If Dic.Exists(Txt) Then ' Neu co Key trong Dic thi lay du lieu = Item'
dArr(I, 1) = Dic.Item(Txt)
End If
Next I
.Range("I1").Resize(R2) = dArr ' Gan du lieu xuong sheet'
End If
End With
End If
End If
Next Ws
Set Dic = Nothing
End Sub