Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A1]) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range, Cls As Range, Rng0 As Range
Dim WF, SoDg As Long, Cot As Byte
Set WF = Application.WorksheetFunction: Set Sh = Worksheets("DuLieu")
Set Rng = Sh.Range(Sh.[A4], Sh.[iV4].End(xlToLeft))
Set sRng = Rng.Find([A1].Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
Set Rng0 = Range([A5], [A65500].End(xlUp)): Cot = sRng.Column
SoDg = Rng0.Rows.Count + 2
For Each Cls In Rng0
Cls.Offset(, 1).Value = WF.VLookup(Cls.Value, Sh.[A4].Resize(SoDg, Cot), Cot, 0)
Cls.Offset(, 2).Value = WF.Sum(Sh.[A4].Resize(SoDg).Find(Cls.Value).Resize(, Cot))
Next Cls
End If
End If
End Sub