Sub Loc()
Dim Cel1 As Range, Cel2 As Range, Des As Range
On Error Resume Next
With Application.InputBox("Chon vung du lieu goc", Type:=8)
Set Des = Application.InputBox("Chon 1 cell de dat du lieu loc", Type:=8)
Des.Value = "San pham"
.Offset(, 0).Resize(, 1).AdvancedFilter 1, , , True
.Offset(1, 0).Resize(, 1).SpecialCells(12).SpecialCells(2).Copy
Des(1, 2).PasteSpecial 3, , , True
.Offset(, 1).Resize(, 1).AdvancedFilter 1, , , True
.Offset(1, 1).Resize(, 1).SpecialCells(12).SpecialCells(2).Copy
Des(2, 1).PasteSpecial 3
.Parent.ShowAllData
For Each Cel1 In Des.CurrentRegion.Resize(1).SpecialCells(2)
With .Find(Cel1, LookAt:=xlWhole)
With Range(.Cells, .Cells.End(xlDown).Offset(-1))
For Each Cel2 In Des.CurrentRegion.Resize(, 1).SpecialCells(2)
Des.Parent.Cells(Cel2.Row, Cel1.Column) = .Offset(, 1).Find(Cel2, LookAt:=xlWhole).Offset(, 1)
Next Cel2
End With
End With
Next Cel1
End With
End Sub