2013-02-15 1 views
0

У меня есть таблица, которую я хочу переместить в другое место, и я хочу удалить значительную часть данных (есть довольно много пробелов или 0, на которые я действительно не забочусь). Вот что у меня есть для кода до сих пор:Range.AutoFilter только с использованием последних критериев? VBA

Dim srcRange As Range 
Dim copysheet As Worksheet 

Set copysheet = ActiveSheet 

Set srcRange = copysheet.range("B1:D1598") 
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count", 0, Empty) 
srcRange.Delete 

С помощью этой установки она только удаляет пробелы, поэтому я проверил это несколько раз со следующими изменениями:

'this code will return only the 0's 
Dim srcRange As Range 
Dim copysheet As Worksheet 

Set copysheet = ActiveSheet 

Set srcRange = copysheet.range("B1:D1598") 
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count", 0) 

'this code will return only the "count"'s 
Dim srcRange As Range 
Dim copysheet As Worksheet 

Set copysheet = ActiveSheet 

Set srcRange = copysheet.range("B1:D1598") 
srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count") 

Так что вывод I пришли к тому, что по какой-то причине инструмент AutoFilter фильтруется только по последним критериям, которые я ввел в критерии1. Кто-нибудь может дать мне некоторое представление о том, почему?

FYI- моя временная работа заключается в том, чтобы запускать 4 команды фильтрации/удаления вместо одного, и он работает нормально - я просто хотел бы немного узнать о причинах этого.

Спасибо!

ответ

1

Вам нужно нужно добавить Operator:=xlFilterValues к вашему Автофильтр вызова:

srcRange.AutoFilter Field:=3, Criteria1:=Array("#VALUE!", "Count"), Operator:=xlFilterValues 

Это фильтр для всех элементов, представленных в факторам1

+0

Вопрос стар, как ад, но я отчаянно нужна помощь. Решение, которое вы опубликовали, повышает вероятность ошибки 1004 autofilter метода класса диапазона с ошибкой – AntiDrondert

+0

Вы проверили, что ваш srcRange является допустимым диапазоном, который содержит всю таблицу? –

+0

Да, я так считаю, я попробовал использовать UsedRange (таблица - это единственное содержимое листа в любом случае), CurrentRegion верхней левой ячейки таблицы ('.Range (« A5 »). CurrentRegion'), назначенный вручную диапазон (' .Range («A5», «E25»)), а в качестве последнего средства попробовал использовать «Selection» – AntiDrondert

Смежные вопросы