Уважаемые форумчане, добрый день!
Столкнулась с такой проблемой: есть файл с большим количеством строк. ВПР виснет и считает все очень долго, поэтому использовала макрос. Но макрос работает только при полном совпадении ячеек. То есть грубо говоря, заменяет формулу "=ВПР(А1;Лист2!А1:В200000;2;0)"
Подскажите, пожалуйста, как преобразовать макрос так, чтобы он заменял формулу "=ВПР("*"&А1&"*";Лист2!А1:В200000;2;0)"?
Заранее большое спасибо!
Вот само тело макроса:
Столкнулась с такой проблемой: есть файл с большим количеством строк. ВПР виснет и считает все очень долго, поэтому использовала макрос. Но макрос работает только при полном совпадении ячеек. То есть грубо говоря, заменяет формулу "=ВПР(А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 |