Tanwar
The ROW function is just returning a number, not a value. In the first cell, formula will be:
=VLOOKUP($B$5&ROW(A1),$D$5:$F$30,2,FALSE)
The ROW function evaluates to 1, creating:
=VLOOKUP($B$5&1,$D$5:$F$30,2,FALSE)
which is what you wanted.
When you copy the formula down, the cell reference within the row function will change like so:
=VLOOKUP($B$5&ROW(A21),$D$5:$F$30,2,FALSE)
which evaluates to:
=VLOOKUP($B$5&2,$D$5:$F$30,2,FALSE)
which is what you want.
Please correct if any of the above statements are incorrect, thanks.