Добро пожаловать в StackOverflow.
Ваша вторая функция относится к ActiveSheet
(в данном случае «Лист1»).В идеале вы всегда должны полностью определять свои диапазоны, то есть: ThisWorkbook.Worksheets("Sheet2").Range("C3")
, хотя я лично предпочитаю присваивать переменные:
Dim WB as Workbook : Set WB = ThisWorkbook
Dim WS as Worksheet : Set WS = WB.Sheets("Sheet1")
Тогда вы можете легко использовать их позже:
With WS
.Range("F11:F70").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("D3"), Unique:=True
End With
В любом случае, тот факт, что вы пытаетесь записать в один и тот же столбец, не помогает ...
Попробуйте выполнить приведенное ниже, если у вас есть "Sheet2"
:
Sub getunique()
Worksheets("Sheet1").Range("F11:F70").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets("Sheet2").Range("C3"), Unique:=True
End
В качестве альтернативы, измените CopyToRange:=Range("C3")
на другой столбец, который все еще должен работать.
EDIT Ошибка, которую вы получаете, состоит в том, что у вас нет ничего в Range("F11:F70")
... измените расширенный фильтруказать диапазон, в котором вы собираете имена файлов Range("C11:C70")
.