Я пробовал ряд методов для фильтрации столбца для уникальных значений (включая пробелы и пробелы с пространством внутри). Я хочу отфильтровать эти значения, а затем вставить их в столбец a на другом листе.VBA Расширенный фильтр уникальные значения и копия на другой лист
Sub filter_2()
With Sheets("ICM flags")
.Columns("a").AdvancedFilter Action:=xlFilterCopy, copytorange:=Sheets("Flag Update (2)").Range("a2"), Unique:=True
End With
End Sub
Описанный выше метод работает для .range("a2")
, но если я пытаюсь использовать .range("a1")
я получаю ошибку во время выполнения 1004 Метод расширенного фильтра класса не удалось.
Я получил ошибку времени выполнения 1004 расширенный метод фильтра класса не удалось с помощью метода ниже.
Sub unique_filter()
Sheets("ICM flags").Columns("a").AdvancedFilter _
Action:=xlFilterCopy, _
copytorange:=Sheets("Flag Update (2)").Range("a1"), Unique:=True
End Sub
Для обоих вышеуказанных методов и с правок в Davesexcel ответ:
Sub AdvFilter()
Dim ws As Worksheet, sh As Worksheet
Dim rng As Range, Frng As Range
Set sh = Sheets("ICM Flags")
Set Frng = sh.Range("A:A")
Set ws = Sheets("Flag Update (2)")
Set rng = ws.Range("A1")
'Frng.AdvancedFilter Action:=xlFilterCopy, copytorange:=rng, Unique:=True
Frng.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
End Sub
метод работает для FilterInPlace
, но не CopyToRange
Иногда (не всегда), если диапазон вы фильтрация не выбран эта ошибка происходит. Попробуйте выбрать диапазон перед фильтрацией. Выбор * не должен * быть обязательным, но я видел, что это имеет значение. –
Я считаю, что вам нужно использовать переменные, если вы хотите скопировать предварительный фильтр на другой лист. – Davesexcel