Чтобы получить частичные совпадения, измените:
If Sheets("ESOS").Cells(x, 1) = Sheet2.Range("B3") Then
На:
If InStr(Sheets("ESOS").Cells(x, 1), Sheet2.Range("B3")) > 0 Then
Вы также можете сделать поиск нечувствительным к регистру:
If InStr(LCase(Sheets("ESOS").Cells(x, 1)), LCase(Sheet2.Range("B3"))) > 0 Then
Такжеобъявлять что-либо как Integer
- это вообще плохая практика, этого следует избегать, особенно если эта переменная хранит номер строки.Если строка превысит 32 767, ваш макрос потерпит крах, хотя в этом случае это число строк результата, которое никогда не должно быть таким большим.Вместо этого используйте Long
.