Здравствуйте ! Есть таблица с артикулами.Их порядка 4 000. В таблице нужно как-то отфильтровать 300-400 артикулов . Делать это ручками проблематично, т.к. они раз в неделю меняются. Пробовал написать макрос по поиску и окраске нужной ячейки в определенный цвет, чтобы потом отфильтровать всё это, да ничего не вышло. Помогите плиз !!! [moder]Файл с примером приложите[/moder] В примере - на первом листе то, что имеем, на втором - то , что хочется получить, чтобы потом отфильтровать ячейки по цвету.
Здравствуйте ! Есть таблица с артикулами.Их порядка 4 000. В таблице нужно как-то отфильтровать 300-400 артикулов . Делать это ручками проблематично, т.к. они раз в неделю меняются. Пробовал написать макрос по поиску и окраске нужной ячейки в определенный цвет, чтобы потом отфильтровать всё это, да ничего не вышло. Помогите плиз !!! [moder]Файл с примером приложите[/moder] В примере - на первом листе то, что имеем, на втором - то , что хочется получить, чтобы потом отфильтровать ячейки по цвету.Jazzman
Jazzman, Вы уверены, что Вам нужно просто окрасить определённые позиции цветом? мб что-то более удобное? Не понятна просто пока цель... Если хотите окрасить, то можно так: [vba]
Код
Sub okras() Dim art() As String Dim i As Long, j As Long Dim Ish1 As Range Dim art1 As Range Set Ish1 = Application.InputBox("Выделите любую ячейку столбца, в котором нужно выделить", _ "Столбец товара", Type:=8) Set art1 = Application.InputBox("Выделите любую ячейку искомых артикулов", _ "Столбец артикулов", Type:=8) i_n = Worksheets(Ish1.Parent.Name).Cells(Rows.Count, Ish1.Column).End(xlUp).Row j_n = Worksheets(art1.Parent.Name).Cells(Rows.Count, art1.Column).End(xlUp).Row ReDim art(j_n) For j = 1 To j_n art(j) = Worksheets(art1.Parent.Name).Cells(j, art1.Column) Next j For j = 1 To j_n For i = 1 To i_n If Worksheets(Ish1.Parent.Name).Cells(i, Ish1.Column) = art(j) Then Worksheets(Ish1.Parent.Name).Cells(i, Ish1.Column).Interior.Color = 65535 End If Next i Next j End Sub
[/vba] Если хотите без инпутбоксов, и файлик будет именно тем, что у Вас показан, можно так: [vba]
Код
Sub okras2() Dim art() As String Dim i As Long, j As Long i_n = Cells(Rows.Count, 1).End(xlUp).Row j_n = Cells(Rows.Count, 2).End(xlUp).Row ReDim art(j_n) For j = 1 To j_n art(j) = Cells(j, 2) Next j For j = 1 To j_n For i = 1 To i_n If art(j) <> "" Then If Cells(i, 1) = art(j) Then Cells(i, 1).Interior.Color = 65535 End If End If Next i Next j End Sub
[/vba]
Jazzman, Вы уверены, что Вам нужно просто окрасить определённые позиции цветом? мб что-то более удобное? Не понятна просто пока цель... Если хотите окрасить, то можно так: [vba]
Код
Sub okras() Dim art() As String Dim i As Long, j As Long Dim Ish1 As Range Dim art1 As Range Set Ish1 = Application.InputBox("Выделите любую ячейку столбца, в котором нужно выделить", _ "Столбец товара", Type:=8) Set art1 = Application.InputBox("Выделите любую ячейку искомых артикулов", _ "Столбец артикулов", Type:=8) i_n = Worksheets(Ish1.Parent.Name).Cells(Rows.Count, Ish1.Column).End(xlUp).Row j_n = Worksheets(art1.Parent.Name).Cells(Rows.Count, art1.Column).End(xlUp).Row ReDim art(j_n) For j = 1 To j_n art(j) = Worksheets(art1.Parent.Name).Cells(j, art1.Column) Next j For j = 1 To j_n For i = 1 To i_n If Worksheets(Ish1.Parent.Name).Cells(i, Ish1.Column) = art(j) Then Worksheets(Ish1.Parent.Name).Cells(i, Ish1.Column).Interior.Color = 65535 End If Next i Next j End Sub
[/vba] Если хотите без инпутбоксов, и файлик будет именно тем, что у Вас показан, можно так: [vba]
Код
Sub okras2() Dim art() As String Dim i As Long, j As Long i_n = Cells(Rows.Count, 1).End(xlUp).Row j_n = Cells(Rows.Count, 2).End(xlUp).Row ReDim art(j_n) For j = 1 To j_n art(j) = Cells(j, 2) Next j For j = 1 To j_n For i = 1 To i_n If art(j) <> "" Then If Cells(i, 1) = art(j) Then Cells(i, 1).Interior.Color = 65535 End If End If Next i Next j End Sub
Вариант с использованием расширенного фильтра: 1) на листе Данные щелкните в ячейке A1 - вкладка Данные - группа Сортировка и фильтр - Дополнительно 2) появится окно - щелкните в поле Дипазон условий - перейдите на лист Условия - выделите ячейки A1:A4 - OK Данные будут отфильтрованы.
P.S. на листе Условия заголовок должен быть такой же, как и на листе данные. Сейчас это заголовок "product_sku". Чтобы снять фильтр: вкладка Данные - группа Сортировка и фильтр - Очистить
Вариант с использованием расширенного фильтра: 1) на листе Данные щелкните в ячейке A1 - вкладка Данные - группа Сортировка и фильтр - Дополнительно 2) появится окно - щелкните в поле Дипазон условий - перейдите на лист Условия - выделите ячейки A1:A4 - OK Данные будут отфильтрованы.
P.S. на листе Условия заголовок должен быть такой же, как и на листе данные. Сейчас это заголовок "product_sku". Чтобы снять фильтр: вкладка Данные - группа Сортировка и фильтр - ОчиститьKarataev