Member 12982752 Ответов: 1

Excel VBA-расширенный фильтр


Привет,

У меня есть данные от A1 до GC15000 на листе 1; Критерии изложены на листе A1:A2 и попробуйте скопировать отфильтрованные данные на лист 3, нажав команду butotn на листе 2, но я получаю ошибку времени выполнения 1004 (точный диапазон-это отсутствующее или недопустимое имя поля)


Когда я пытаюсь установить диапазон данных и скопировать его в диапазон от A1: Z15000, это работает..

Спасибо

Что я уже пробовал:

Sheets("Sheet1").Range("A1:GC15000").AdvancedFilter Action:=xlFilterCopy, _
 CriteriaRange:=Sheets("Sheet2").Range("A1:A2"), CopyToRange:=Sheets("Sheet3").Range("A1:GC15000"), Unique:=False

1 Ответов

Рейтинг:
8

Maciej Los

Прочесть эта статья MSDN[^] чтобы узнать, что означает ошибка 1004.

Такое обращение: Sheets("Sheet2") может быть, этого недостаточно. Представьте себе, что у вас открыты 2 рабочие книги. Каждая из книг содержит Sheet2 Может ли компилятор VBA знать, какой лист Вы имеете в виду? Нет!

Итак, замените это:

Sheets("Sheet1").Range("A1:GC15000").AdvancedFilter Action:=xlFilterCopy, _
 CriteriaRange:=Sheets("Sheet2").Range("A1:A2"), CopyToRange:=Sheets("Sheet3").Range("A1:GC15000"), Unique:=False

с:
Sub CopyData()
Dim srcwsh As Worksheet, criwsh As Worksheet, dstwsh As Worksheet

On Error Goto Err_CopyData

Set srcwsh = ThisWorkbook.Worksheets("Sheet1")
Set criwsh = ThisWorkbook.Worksheets("Sheet2")
Set dstwsh = ThisWorkbook.Worksheets("Sheet3")

srcwsh.Range("A1:GC15000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=criwsh.Range("A1:A2"), CopyToRange:=dstwsh.Range("A1"), Unique:=False

Exit_CopyData:
    Set srcwsh = Nothing
    Set criwsh = Nothing
    Set dstwsh = Nothing
    Exit Sub

Err_CopyData:
    MsgBox Err.Description, vbExclamation, Err.Number
    Resume Exit_CopyData
End Sub


Для получения более подробной информации, пожалуйста, смотрите:
Производительность в Excel на VBA кодирование передового опыта - офис в блогах[^]
Обработка ошибок во время выполнения в VBA[^]
Производительность Excel 2010: советы по оптимизации производительности.[^]


Member 12982752

Спасибо.. Теперь ошибок нет, но он копирует только до Z.. У меня есть столбец upto GC.. мне нужен этот фильтр, чтобы скопировать столбец upto GC.. спасибо

Maciej Los

Кажется, я забыл добавить диапазон к srcwsh Пожалуйста, проверьте мой ответ после изменений. Если он соответствует вашим критериям, пожалуйста, примите его (зеленая кнопка).

Member 12982752

Спасибо.- это прекрасно работает.. :)

Member 12982752

У меня есть еще один вопрос..Я хотел бы исключить запись, которая не имеет даты ( если нет даты для записи; то есть: - у меня есть дата для некоторых записей в столбце DF, просто отфильтруйте только их, просто исключите пустые)

Спасибо

Maciej Los

Вы должны добавить еще одно поле в критерии и оставить его пустым, а затем изменить код ;)

Maciej Los

Всегда пожалуйста

Member 12982752

Спасибо за ответ, но прошу прощения.. Это должно быть как-то по-другому, мне нужно сохранить пустые и определить дату..

Спасибо

Maciej Los

Итак, в камере A3 от Sheet2 вставлять <> в качестве критериев.
Подробнее на: Предварительный фильтр для отображения строк с непустыми значениями

Member 12982752

У меня есть пробел и "да" в колонке.. Просто хотелось бы сохранить заготовки и убрать да.. Я попробовал ="" и < & gt; оба отфильтровать пробел и вернуть да.. Пожалуйста помочь :)

Maciej Los

Извините, я не вижу ваших данных, поэтому ничем не могу вам помочь. Продолжай пытаться!

Member 12982752

Представленный Изъяты
Да


Да



Да








Да




Это что-то вроде этого.. Заголовок столбца представляется отозванным.. таким образом, colummn заполняется либо да, либо пустым..