Hi Graeme ... try this:
Sub GetMatchingData()
Dim intRows1 As Integer
Dim intRows2 As Integer
Dim i As Integer
Dim j As Integer
Dim strToFind As String
Dim strToWrite As String
Dim strMatch As String
intRows1 = Worksheets("Sheet1").Range("A1").End(xlDown).Row
intRows2 = Worksheets("Sheet2").Range("A1").End(xlDown).Row
If intRows2 = 65536 Or Worksheets("Sheet2").Range("A1") = Empty Then GoTo ErrorExit
For i = 1 To intRows1
strToFind = Worksheets("Sheet1").Range("A" & i).Text
strToWrite = Worksheets("Sheet1").Range("B" & i).Text
For j = 1 To intRows2
strMatch = Worksheets("Sheet2").Range("A" & j).Text
If strToFind = strMatch Then
Worksheets("Sheet2").Range("B" & j).Value = strToWrite
GoTo GetNextLookup
End If
Next j
GetNextLookup:
Next i
ErrorExit:
End Sub
Note that this relies on consecutive data with no blank cells in col A; if you need something more robust, then use specialcells instead of Range("A1").End(xlDown).
Hope that helps. MM
Bookmarks