範囲は 行数を指定する必要はない
これは 私の好みでは ありますが
シートの指定は シート名より オブジェクト名の方が よい
なぜなら、シート名は後日変更したくなることがある。
その場合マクロまで 変える必要がでてくる
オブジェクト名なら、固定です。
したがって 関数でかけば
=Vlookup(SHEET1!C4,SHEET2!AX:BH,11,0) となります。
これを マクロということなら
For I = 4 To Sheet1.Cells(Rows.Count, "C").End(xlUp).Row
Sheet1.Cells(I, "H") = WorksheetFunction.VLookup(Sheet1.Cells(I, "C"), Sheet2.Columns("AX:BH"), 11, 0)
Next
ただ 該当のものがない時 関数であれば IFERROR関数がありますが
VBAでは 使えないので
On Error Resume Next
For I = 4 To Sheet1.Cells(Rows.Count, "C").End(xlUp).Row
Sheet1.Cells(I, "H") = WorksheetFunction.VLookup(Sheet1.Cells(I, "C"), Sheet2.Columns("AX:BH"), 11, 0)
Next
これで いいかと