Уважаемые форумчане, добрый день!
Столкнулась с такой проблемой: есть файл с большим количеством строк. ВПР виснет и считает все очень долго, поэтому использовала макрос. Но макрос работает только при полном совпадении ячеек. То есть грубо говоря, заменяет формулу "=ВПР(А1;Лист2!А1:В200000;2;0)"
Подскажите, пожалуйста, как преобразовать макрос так, чтобы он заменял формулу "=ВПР("*"&А1&"*";Лист2!А1:В200000;2;0)"?
Заранее большое спасибо!
Вот само тело макроса:
Код |
---|
Sub ВПР()
Dim a, b, c, iLastrow As Long, i As Long, ii As Long
With Sheets("Лист1")
iLastrow = .Cells(Rows.Count, 1).End(xlUp).Row
a = Range(.[a8], .Range("a" & iLastrow)).Value
End With
With Sheets("Лист2")
iLastrow = .Cells(Rows.Count, 3).End(xlUp).Row
b = Range(.[C8], .Range("A" & iLastrow)).Value
End With
ReDim c(1 To UBound(a), 1 To 30)
With CreateObject("Scripting.Dictionary")
For i = 1 To UBound(b)
.Item(b(i, 1)) = i
Next
For i = 1 To UBound(a)
If .exists(a(i, 1)) Then
c(i, 1) = b(.Item(a(i, 1)), 2)
End If
Next
End With
With Sheets("Лист1")
.[o8].Resize(UBound(c), 3) = c
.Activate
End With
End Sub
|