фильтрация
Заранее благодарен.
Драсьте. Проблема вот в чем. Есть книга, в которой два листа: на одном - список данных, на втором - критерии отбора. Необходимо выбрать из первого списка данные, удовлетворяющие второму списку. Второй список динамичен: может изменяться количество условий отбора. Поделитесь соображениями.
Заранее благодарен.
Воспользуйся расширенным фильтром (Advanced filter).
положим я написал такое
ThisWorkbook.Worksheets("Лист1").Columns("L:L").Select
Selection.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=sheets("Лист2").Range("a1:a5), Unique:=False
А если у меня список на 2 листе постоянно меняться должен. Всегда в код лезть что-ли?
Пробовал писать CriteriaRange:=sheets("Лист2").range(cells(1,1),cells(5,1)), пишет run-time error 1004
Такая беда
Воспользуйся расширенным фильтром (Advanced filter).
положим я написал такое
ThisWorkbook.Worksheets("Лист1").Columns("L:L").Select
Selection.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=sheets("Лист2").Range("a1:a5), Unique:=False
А если у меня список на 2 листе постоянно меняться должен. Всегда в код лезть что-ли?
Пробовал писать CriteriaRange:=sheets("Лист2").range(cells(1,1),cells(5,1)), пишет run-time error 1004
Такая беда
Тут есть такая тонкость. Когда используешь range(cell1, cell2), эти самые cell1 и cell2 должны быть конкретными экселевскими ячейками.
cells(1,1) как известно возвращает ячейку A1 АКТИВНОГО листа. Поэтому если ты берешь range(cells(1,1),cells(5,1)) не на активном листе, возникает ошибка. Чтобы ее не было, синтаксис должен быть такой:
sheets("Лист2").range(sheets("Лист2").cells(1,1),sheets("Лист2").cells(5,1))
Это, конечно, ужасно неудобно, но такова жизнь.
Огромная благодарность Все получилось
Кстати, в выражениях типа Range("A1:A5") в скобках может стоять любая допустимая строка. В твоем примере это может выглядеть, например, так:
CriteriaRange:=sheets("Лист2").Range("a1:a" & NumCrit)
(где NumCrit - переменная с номером последней строки в критериях)
Возможно, так твой код будет нагляднее.
Драсьте. Проблема вот в чем. Есть книга, в которой два листа: на одном - список данных, на втором - критерии отбора. Необходимо выбрать из первого списка данные, удовлетворяющие второму списку. Второй список динамичен: может изменяться количество условий отбора. Поделитесь соображениями.
Заранее благодарен.
Подобную задачу можно решить и не используя VBA. только при этом фильтрация будет производится не на самом списке данных, а рядом. Я бы использовал стандартные функции: ИНДЕКС, ПОИСКПОЗ и СМЕЩ. Кроме того, для наглядности выбора фильтра(ов) можно использовать "Ограничение вводимой в ячейку информаци.
Если тебе это еще нужно - можно попробоват прописать задачу детально.