You could try these in a copy of your workbook with the full compliments of data.
Array sizes are restricted by available memory so you could get the "Out Of Memory" warning.
It pastes the result in Sheet1, Columns B to F as it stands for now.
Sub With_Arrays()
Dim a, b, i As Long, j As Long, x As Long
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = Sheets("Sheet1")
Set sh2 = Sheets("Sheet2")
a = sh1.Range("B2:F" & sh1.Cells(Rows.Count, 2).End(xlUp).Row).Value
b = sh2.Range("A2:E" & sh2.Cells(Rows.Count, 1).End(xlUp).Row).Value
For i = LBound(a) To UBound(a)
For j = LBound(b) To UBound(b)
If b(j, 1) = a(i, 1) Then
For x = 2 To 5
a(i, x) = b(j, x)
Next x
Exit For
Else
End If
Next j
Next i
sh1.Range("B2").Resize(UBound(a), 5) = a
End Sub
Sub Get_Offset_Values()
Dim sht1 As Worksheet, sht2 As Worksheet
Dim fnd As Range, LastRow As Long, r As Long
Set sht2 = Sheets("Sheet2")
Set sht1 = Sheets("Sheet1")
LastRow = sht1.Cells(Rows.Count, "B").End(xlUp).Row
For r = 2 To LastRow 'change 2 to 1 if you don't have headers
Set fnd = Nothing
Set fnd = sht2.Range("A2:A" & sht2.Cells(Rows.Count, 1).End(xlUp).Row).Find(sht1.Cells(r, "B"), , , xlWhole)
If Not fnd Is Nothing Then fnd.Offset(, 1).Resize(, 4).Copy sht1.Cells(r, 3)
Next r
End Sub
The first one, with arrays, should be the fastest by far if it does work.