Your code was a bit hard to follow, but I think this should work. The code now loops through the H Column on the Rate WS, pulls the STYLE from the row's H column, and searches the A column of the Sheet1 worksheet for the first row that matches the Style. I think this is what you were looking for; not sure which worksheet you wanted values to be pasted into and which worksheet you wanted to search for matches.
Also, if Sheet1.Cells(whateverRowTheLoopsOn, ColA) matches RateWS.Cells(whateverRowTheOtherLoopsOn, ColH), copying Col A from Sheet1 into Col I of RateWS will be redundant - You'll have "TheStyle" in H and "TheStyle" in I.
Sub findrate()
Dim STYLE As Variant
Dim finalrow As Long 'Changed to Long from Int
Dim i As Long 'Changed to Long from Int
Dim k As Long 'New declaration
Dim ctrSearchRow As Long 'Changed to Long from Int
Dim emstring As String 'Not Used - Delete this
Dim rateWS As Worksheet 'New declaration
Dim searchWS As Worksheet 'New declaration
'Setting worksheet objects to make the following code easier to digest
set rateWS = Application.ThisWorkbook.Worksheets("Rate")
set searchWS = Application.ThisWorkbook.Worksheets("Sheet1")
rateWS.Range("I6:N20").ClearContents
finalrow = rateWS.Cells(Rows.Count, 8).End(xlUp).Row 'Changed to Col H and looking at Rate WS
ctrSearchRow = searchWS.Cells(Rows.Count, 8).End(xlUp).Row 'New setting
For i = 2 To finalrow
STYLE = rateWS.cells(i, 8).Value
For k = 2 to ctrSearchRow
If searchWS.Cells(k, 1) = STYLE Then
searchWS.Range("A" & k & ":F" & k).Copy
rateWS.Range("I" & i & ":N" & i).PasteSpecial xlPasteFormulasAndNumberFormats
Exit For
End If
Next k
Next i
End Sub