|
▼kanabun さん:
そしてご回答いただきました皆さんありがとうございました。
実行したいことの説明もこのように記述する、ということも学ばせて
いただきました。
そして下記の3・4のどちらもきちんと処理することができました。
ありがとうございました。
ご回答の指示にどう対処すればよいかも迷いながらの超初心者ですが
今後ともよろしくお願いいたします。
>Sub 列検索でデータを取り込む3()
> Dim i As Long
> Dim j As Long
> Dim h As Long
> Dim S As String
> Dim c As Range, r2 As Range
> Dim WS1 As Worksheet
> Dim WS2 As Worksheet
>
> Set WS1 = Worksheets("sheet1")
> Set WS2 = Worksheets("sheet2")
> Set r2 = WS2.UsedRange
> With WS1
> For i = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
> S = .Cells(i, 1).Value
> h = 5
> For j = 1 To 23 Step 2 '← j は Sheet2の検索列番号
> Set c = r2.Columns(j).Find(S, , xlValues, xlWhole)
> If Not c Is Nothing Then '見つかったら
> 'Sheet1の h列に値コピー
> .Cells(i, h).Value = c.Offset(, 1).Value
> End If
> h = h + 3 '次のコピー列
> Next j
> Next
> End With
>End Sub
>
>また、h は j の関数なので 以下のようにも書けると思います。
>
>Sub 列検索でデータを取り込む4()
> Dim i As Long
> Dim j As Long, h As Long
> Dim S As String
> Dim c As Range, r2 As Range
> Dim WS1 As Worksheet
> Dim WS2 As Worksheet
>
> Set WS1 = Worksheets("sheet1")
> Set WS2 = Worksheets("sheet2")
> Set r2 = WS2.UsedRange
> With WS1
> For i = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
> S = .Cells(i, 1).Value
> For j = 1 To 23 Step 2 '← j は Sheet2の検索列番号 計12列検索
> Set c = r2.Columns(j).Find(S, , xlValues, xlWhole)
> If Not c Is Nothing Then 'Sheet1の h列に値コピー
> h = 3.5 + j * 3 / 2 '◆転記先列番号の計算
> .Cells(i, h).Value = c.Offset(, 1).Value
> End If
> Next j
> Next
> End With
>End Sub
|
|