Вы не вставляете свои данные. Команда Insert
просто создает новую (пустую) строку, вот и все.
Измените свой код на
With wbk.Sheets(1)
.AutoFilterMode = False
.Range("A4:AL" & lastrow).AutoFilter Field:=37, Criteria1:="=NC", Operator:=xlFilterValues
.Range("A4:AL" & lastrow).AutoFilter Field:=38, Criteria1:="=New", Operator:=xlFilterValues
lastrow_Offset = ThisWorkbook.Sheets("Test").Cells(Rows.Count, "H").End(xlUp).row
Dim destCell As Range
Set destCell = ThisWorkbook.Sheets("Test").Range("H26").Offset((lastrow_Offset + 1) - 26, 0)
.Range("C1:C" & lastrow).SpecialCells(xlCellTypeVisible).Copy destCell
.AutoFilterMode = False
End With
Обновление : как указала Сиддхарт Роут, я ошиблась, Insert
вставляет данные. Однако, похоже, что это не работает, если для копирования был выбран несмежный диапазон, как это происходит в большинстве случаев для отфильтрованных данных.
В этом случае либо укажите целевой параметр уже при копировании данных (как я это делал в моем коде выше), либо используйте PasteSpecial
-метод целевого диапазона. Я предпочитаю использовать первый метод, поскольку он не хранит данные в буфере вставки, но это второстепенная вещь.