|
返信ありがとうございます。
>とりあえず、ワークシート関数である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列のセルに数個データがあるとして、完全に一致しているデータがあっても書き換えられず、全て「番号なし」のメッセージが表示されます。)
本を見ながらの初心者なので教えていただければと思います。
|
|