| 
    
     |  | みなさま、こんにちは。 
 取り敢えず、
 >IndexだけなくVLOOKUPもできますけどこちらのほうがいいですか?
 意図した結果が出ているのなら良いのでは?
 
 今ひとつ処理内容が理解できていませんが、こういうことでしょうか?
 
 Sub test()
 Dim rngOrg   As Range
 Dim rngRes   As Range
 Dim c      As Range
 Dim i      As Long
 
 '変換前データのセル範囲を変数に設定
 With Worksheets("Sheet1")
 Set rngOrg = .Range(.Cells(1, 2), .Cells(65536, 1).End(xlUp).Offset(, 16))
 End With
 '変換後データ格納セルをクリア、セル範囲を変数に設定
 '項目名コピー
 With Worksheets("Sheet3")
 Set rngRes = .Range(rngOrg.Address)
 .UsedRange.Clear
 .Cells(1, 1).Resize(rngOrg.Rows.Count).Value = rngOrg.Resize(, 1).Offset(, -1).Value
 End With
 
 '変換
 i = 1
 With Worksheets("Sheet2")
 For Each c In rngOrg
 rngRes(i).Value = .Cells(c.Value + 1, c.Column).Value
 i = i + 1
 Next c
 End With
 
 'オブジェクト解放
 Set rngOrg = Nothing
 Set rngRes = Nothing
 
 End Sub
 
 
 ちなみに、ループは回し始めたのと逆の順に Next を書くことになります。
 
 |  |