VBA — Автоматическая фильтрация таблицы и вставка на Новый лист

#excel #vba #filter

Вопрос:

В настоящее время мой код берет данные из таблицы, фильтрует данные по критериям в столбце, а затем вставляет данные в определенное место на отдельном листе.

Я пытаюсь, чтобы он скопировал все столбцы, кроме ColumnQ отфильтрованных данных, и вставил их в качестве значений на другой лист.

Мой текущий код находится на вершине, однако я хочу, чтобы он функционировал как второй бит кода.

 Dim dndWS As Worksheet
Dim wb As Workbook
Set wb = ThisWorkbook
Set dndWS = wb.Worksheets("DO NOT DELETE")

With dndWS
   .AutoFilterMode = False
   With .Range("H3:Q500")
       .AutoFilter Field:=9, Criterial1:="ColumnQ"
       .SpecialCells(xlCellTypeVisible).Copy Destination:=wb.Worksheets("MASTER").Range("A22:I57")
   End With
End With
 

Я хочу, чтобы код функционировал как таковой:

 Dim dndWS As Worksheet
    Dim wb As Workbook
    Set wb = ThisWorkbook
    Set dndWS = wb.Worksheets("DO NOT DELETE")

    With dndWS
       .AutoFilterMode = False
       With .Range("H3:Q500")
           .AutoFilter Field:=9, Criterial1:="ColumnQ"
           ONLY SELECT/COPY RANGE H:P FROM FILTERED TABLE
           PASTE AS VALUES TO wb.Worksheets("MASTER").Range("A22:I57")
       End With
     End With
 
 

Комментарии:

1. Насколько я знаю, у вас есть три варианта: 1) пройтись по всему диапазону данных, пропустить столбец Q, записать все значения в массив, затем вставить их в целевой лист, а затем отформатировать все. 2) скопируйте/вставьте в две операции, один раз для cols A-P, затем снова для R . 3) скопируйте/вставьте один раз, скопировав все столбцы, затем удалите Q с нового листа. Я думаю, что 3, вероятно, самый простой.

2. @ChrisStrickland Я выбрал вариант 3. Самый простой, но в то же время самый эффективный. Спасибо!

Ответ №1:

Насколько я знаю, у вас есть три варианта: 1) пройтись по всему диапазону данных, пропустить столбец Q, записать все значения в массив, затем вставить их в целевой лист, а затем отформатировать все. 2) скопируйте/вставьте в две операции, один раз для cols A-P, затем снова для R . 3) скопируйте/вставьте один раз, скопировав все столбцы, затем удалите Q с нового листа. Я думаю, что 3, вероятно, самый простой.