Sub laydulieu()
Dim i As Long, lr As Long, dic As Object, a As Long, sh As Worksheet, kq, arr, dk As String
Set dic = CreateObject("scripting.dictionary")
With Sheets("Ma")
lr = .Range("B" & Rows.Count).End(xlUp).Row
If lr < 3 Then Exit Sub
arr = .Range("B3:E" & lr).Value
For i = 1 To UBound(arr)
dk = arr(i, 1)
If Not dic.exists(dk) Then
dic.Add dk, arr(i, 4)
End If
Next i
End With
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> "MA" Then
With sh
lr = .Range("B" & Rows.Count).End(xlUp).Row
If lr > 3 Then
arr = .Range("B4:C" & lr).Value
ReDim kq(1 To UBound(arr), 1 To 1)
For i = 1 To UBound(arr)
dk = arr(i, 1)
If dic.exists(dk) Then
kq(i, 1) = dic.Item(dk)
End If
Next i
End If
.Range("G4:G" & lr).Value = kq
End With
End If
Next
End Sub