Добрый вечер! Прошу Вашей помощи в написании макроса, поскольку новичек в макросах Макрос должен закрасить ячейки на Лист1 которые содержат слова из Лист2. УФ не удобно пользоватся поскольку количество строк на Лист2 меняется. Количество строк на Лист1 может доходить до 900 тис. Заранее благодарен!)
Добрый вечер! Прошу Вашей помощи в написании макроса, поскольку новичек в макросах Макрос должен закрасить ячейки на Лист1 которые содержат слова из Лист2. УФ не удобно пользоватся поскольку количество строк на Лист2 меняется. Количество строк на Лист1 может доходить до 900 тис. Заранее благодарен!)Alexander5777
Sub Макрос3() Dim rng1 As Range, rng2 As Range Application.ScreenUpdating = False Set sd = CreateObject("Scripting.Dictionary") Set rng2 = Worksheets("Лист2").Range("A2:A" & Worksheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row) Set rng1 = Worksheets("Лист1").Range("A2:A" & Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row) rng1.Interior.Pattern = xlNone For Each n In rng2 If Not sd.Exists(n.Value) Then sd.Add n.Value, n.Value Next For Each n In rng1 If sd.Exists(n.Value) Then n.Interior.Color = 1243494 Next Application.ScreenUpdating = True End Sub
[/vba]
WowGun, Вы забыли в конце поставить [vba]
Код
Application.ScreenUpdating = True
[/vba] Можно ещё таким макросом [vba]
Код
Sub Макрос3() Dim rng1 As Range, rng2 As Range Application.ScreenUpdating = False Set sd = CreateObject("Scripting.Dictionary") Set rng2 = Worksheets("Лист2").Range("A2:A" & Worksheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row) Set rng1 = Worksheets("Лист1").Range("A2:A" & Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row) rng1.Interior.Pattern = xlNone For Each n In rng2 If Not sd.Exists(n.Value) Then sd.Add n.Value, n.Value Next For Each n In rng1 If sd.Exists(n.Value) Then n.Interior.Color = 1243494 Next Application.ScreenUpdating = True End Sub