Target Rows(i)...Where is i assigned its value? That is the only problem I see.
Looping from 1 to some Magic Number is very bad programming practice. For one thing, every time an empty cell matches an empty cell, you'll be copying an empty Row to Target
LastRow = Cells(Rows.Count, "Column_Letter).End(xlUp).Row
LastColumn = Cells(Row_Number, Columns.Count).End(xlToLeft).Column
NextRow, (For Sheet Target,) =LastRow + 1
Using Find is a faster way than looping thru an entire Row
Advanced coding techniques:
Dim Cel As Range
Dim Found As Range
For each Cel in Range(Cells(2, "A"), Cell(Rows.Count, "A").End(xlUp)) 'Just the used part of "A"
With Sheets("DATA")
Set Found = .Cells.Find(Cel)' Will find the first match. Set Find to "By Columns" or "By Rows," I fergit which
If not Found is Nothing then _
'Space+Underscore is Line continuation mark
.Rows(Cel.Row).Copy Sheets("Target").Cells(Rows.Count, "A").End(xlUp).Offset(1,0)
'Offset(1,) is down one cell from the bottom used cell
End With
Next Cel