| 
    
     |  | 返信ありがとうございます。 
 >とりあえず、ワークシート関数であるMatch関数をVBAで使うことで、検索結果の
 >行を取得します。
 >
 >以下のコードは、Sheet1のB1セルの値を検索するものです。
 >
 >Sub Sample()
 > Dim c As Range
 > Dim lngRow As Long
 >
 > With Sheets("Sheet1").Range("B1")
 >  lngRow = 0
 >  On Error Resume Next
 >  lngRow = Application.Match(.Value, Sheets("Sheet2").Columns("B"), 0)
 >  On Error GoTo 0
 >  If lngRow > 0 Then
 >   Sheets("Sheet2").Cells(lngRow, 3).Value = .Offset(, -1).Value
 >  Else
 >   MsgBox "番号なし" & .Value
 >  End If
 > End With
 >End Sub
 >
 >これをヒントにでもして、ご自分で少し考えてみてください。
 >Sheet1のB列のセルすべてを処理するためには、上記のコードに、
 >For 〜 Next などの繰り返し処理を加えることになります。
 >繰り返し処理の方法は、過去ログにヒントがたくさんありますので、検索してみる
 >のもいいかもしれません。
 
 
 アドバイスいただいたように考えてみたのですが、
 
 (省略)
 Dim RR As Long
 Dim Rmax As Long
 
 Rmax = Sheets("Sheet1").Range("B65536").End(xlUp).Row
 For RR = 2 To Rmax
 
 With Sheets("Sheet1")
 lngRow = 0
 On Error Resume Next
 lngRow = Application.Match(Cells(RR, 2).Value, Sheets("Sheet2").Columns("B"), 0)
 On Error GoTo 0
 
 If lngRow > 0 Then
 Sheets("Sheet2").Cells(lngRow, 3).Value = .Offset(RR, -1).Value
 Else
 MsgBox "番号なし" & .Value
 End If
 End With
 Next
 End Sub
 
 以上でやるとif文を実行せず、全てElse以降に進んでしまうようなのです。
 (Sheet1のB列のセルに数個データがあるとして、完全に一致しているデータがあっても書き換えられず、全て「番号なし」のメッセージが表示されます。)
 
 本を見ながらの初心者なので教えていただければと思います。
 
 
 |  |