И вот возник ещё один вопрос. Я составил пример, прикрепил.
В примере есть один столбец на листе1 и одна ячейка с синими границами на листе2
Можно ли сделать так, чтобы при условии, что в синей ячейке (на листе2) написано "жираф", в фильтре (на листе1) выбирались только жирафы. А если там написано "собака", то в фильтре выбирались только собаки?
Спасибо
И вот возник ещё один вопрос. Я составил пример, прикрепил.
В примере есть один столбец на листе1 и одна ячейка с синими границами на листе2
Можно ли сделать так, чтобы при условии, что в синей ячейке (на листе2) написано "жираф", в фильтре (на листе1) выбирались только жирафы. А если там написано "собака", то в фильтре выбирались только собаки?
Топчете правой мышой на ярлычок листа2, Исходный код, в появившемся окне вставляете вот это [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "B2" Then Exit Sub Sheets("Лист1").ListObjects("Таблица2").Range.AutoFilter Field:=1, Criteria1:=Target End Sub
[/vba]
Топчете правой мышой на ярлычок листа2, Исходный код, в появившемся окне вставляете вот это [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "B2" Then Exit Sub Sheets("Лист1").ListObjects("Таблица2").Range.AutoFilter Field:=1, Criteria1:=Target End Sub
_Boroda_, тут ещё такая проблема образовалась. Фильтр не обновляется. То есть, например, если ячейка будет ссылкой на другую ячейку, а после этого другую ячейку поменять на "зебра", то фильтр не обновится.
Короче, я сейчас нормальный пример составлю и внятно спрошу, если можно)
_Boroda_, тут ещё такая проблема образовалась. Фильтр не обновляется. То есть, например, если ячейка будет ссылкой на другую ячейку, а после этого другую ячейку поменять на "зебра", то фильтр не обновится.
Короче, я сейчас нормальный пример составлю и внятно спрошу, если можно)iilfat
Сообщение отредактировал iilfat - Пятница, 24.07.2015, 15:58
Короче, вот. На листе Sample находится сводная таблица. Там есть ячейка для Customer name. Если Customer name такой-то, то и в листе SAP в фильтре в столбце Customer name должны быть выбраны только такие-то.
Customer name в сводной таблице выбирается вручную. И сразу после этого выбора должен обновиться фильтр.
Извините, что достаю. Заранее спасибо.
Короче, вот. На листе Sample находится сводная таблица. Там есть ячейка для Customer name. Если Customer name такой-то, то и в листе SAP в фильтре в столбце Customer name должны быть выбраны только такие-то.
Customer name в сводной таблице выбирается вручную. И сразу после этого выбора должен обновиться фильтр.
вариант с расширенным фильтром, таблица на листе1 фильтруется по всем значениям введенным на листе2 [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) With [criteria[#All]] If Not Intersect(Target, .Resize(.Rows.Count + 1)) Is Nothing Then _ [Таблица2[#All]].AdvancedFilter 1, .Rows(1).Resize(Application.CountA(.Columns(1))), 0 End With End Sub
[/vba]
вариант с расширенным фильтром, таблица на листе1 фильтруется по всем значениям введенным на листе2 [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) With [criteria[#All]] If Not Intersect(Target, .Resize(.Rows.Count + 1)) Is Nothing Then _ [Таблица2[#All]].AdvancedFilter 1, .Rows(1).Resize(Application.CountA(.Columns(1))), 0 End With End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [A1]) Is Nothing Then Exit Sub Sheets("SAP").Range("$A$1:$D$699").AutoFilter Field:=1, Criteria1:=[B1] End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [A1]) Is Nothing Then Exit Sub Sheets("SAP").Range("$A$1:$D$699").AutoFilter Field:=1, Criteria1:=[B1] End Sub
[offtop]На работе две. Свою я ставлю на 6400dpi, поэтому никто больше ей работать не может, а вторую, обычную, даю тому, кому что-нибудь показываю. Предваряя вопрос, сразу скажу, что мониторов у меня там тоже два, и клав две. Кстати, я когда в Сбере работал, у меня был свой угол с шестью компьютерами и кресло на колесиках. Так на это шоу клиенты знакомых специально приводили смотреть.
[offtop]На работе две. Свою я ставлю на 6400dpi, поэтому никто больше ей работать не может, а вторую, обычную, даю тому, кому что-нибудь показываю. Предваряя вопрос, сразу скажу, что мониторов у меня там тоже два, и клав две. Кстати, я когда в Сбере работал, у меня был свой угол с шестью компьютерами и кресло на колесиках. Так на это шоу клиенты знакомых специально приводили смотреть._Boroda_
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [A1]) Is Nothing Then Exit Sub Sheets("SAP").Range("$A$1:$D$699").AutoFilter Field:=1, Criteria1:=[B1] End Sub
[/vba]
"$A$1:$D$699" указывает всю таблицу? Таблица всегда разной будет. Знаю только количество столбцов. Хотелось бы указать в формате C1:C21
[A1] - это ячейка, где фильтрованный заголовок интересующего меня столбца?
_Boroda_, а вот в этом коде
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [A1]) Is Nothing Then Exit Sub Sheets("SAP").Range("$A$1:$D$699").AutoFilter Field:=1, Criteria1:=[B1] End Sub
[/vba]
"$A$1:$D$699" указывает всю таблицу? Таблица всегда разной будет. Знаю только количество столбцов. Хотелось бы указать в формате C1:C21
[A1] - это ячейка, где фильтрованный заголовок интересующего меня столбца?iilfat
Сообщение отредактировал iilfat - Понедельник, 27.07.2015, 14:54
Ура, получилось, все вопросы закрыты Почему-то только независимо от того, что находится в ячейке [A1], код работает) [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [A1]) Is Nothing Then Exit Sub Sheets("SAP").Range("$A$1:$D$699").AutoFilter Field:=1, Criteria1:=[B1] End Sub
[/vba]
Ура, получилось, все вопросы закрыты Почему-то только независимо от того, что находится в ячейке [A1], код работает) [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, [A1]) Is Nothing Then Exit Sub Sheets("SAP").Range("$A$1:$D$699").AutoFilter Field:=1, Criteria1:=[B1] End Sub
[/vba] 2) если в листе "Сверка" в ячейке B3 написано "111", то в листе "SAP" отфильтровать столбец "SKU" по "111" и из оставшихся ячеек сумму 3-го и 4-го столбцов вместе взятых отправить в ячейку C3 листа "Сверка", 3) вернуть фильтр листа "SAP" в исходное положение (в каком оно было после пункта 1), 4) если в листе "Сверка" в ячейке B4 написано "222", то в листе "SAP" отфильтровать столбец "SKU" по "222" и из оставшихся ячеек сумму 3-го и 4-го столбцов вместе взятых отправить в ячейку C3 листа "Сверка", 5) вернуть фильтр листа "SAP" в исходное положение (в каком оно было после пункта 1)... и т.д.
Тут, наверное, важно отметить, что количество строк может быть разным. Иногда до B10 дойдем, а иногда на B4 останемся. Основываться можно на том, что если в столбце B нет чего-то из фильтра, то ничего рядом заполнять не нужно. Надеюсь, я всё хорошо сформулировал. И если всё получится, я перестану вас доставать нубовскими вопросами \
Если упростить, то по сути мне вроде бы недостаёт разве что именно макроса фильтрования на основе ячейки (а не в исходном коде).
Спасибо
Есть у меня вот файл из двух листов. Мне нужно запустить следующий макрос: 1) отфильтровать лист "SAP" следующим образом: [vba]
[/vba] 2) если в листе "Сверка" в ячейке B3 написано "111", то в листе "SAP" отфильтровать столбец "SKU" по "111" и из оставшихся ячеек сумму 3-го и 4-го столбцов вместе взятых отправить в ячейку C3 листа "Сверка", 3) вернуть фильтр листа "SAP" в исходное положение (в каком оно было после пункта 1), 4) если в листе "Сверка" в ячейке B4 написано "222", то в листе "SAP" отфильтровать столбец "SKU" по "222" и из оставшихся ячеек сумму 3-го и 4-го столбцов вместе взятых отправить в ячейку C3 листа "Сверка", 5) вернуть фильтр листа "SAP" в исходное положение (в каком оно было после пункта 1)... и т.д.
Тут, наверное, важно отметить, что количество строк может быть разным. Иногда до B10 дойдем, а иногда на B4 останемся. Основываться можно на том, что если в столбце B нет чего-то из фильтра, то ничего рядом заполнять не нужно. Надеюсь, я всё хорошо сформулировал. И если всё получится, я перестану вас доставать нубовскими вопросами \
Если упростить, то по сути мне вроде бы недостаёт разве что именно макроса фильтрования на основе ячейки (а не в исходном коде).