В приведенном ниже базовом коде используется автофильтр (гораздо быстрее, чем зацикливание), и копируются видимые ячейки в диапазоне в первую пустую ячейку в столбце A.
Удаление части ваших данных приведет к появлению строксдвинуть и возможно испортить ваши данные.Я также предоставил строку кода, чтобы очистить только ваш диапазон.
Dim ws1 As Worksheet, ws3 As Worksheet, lRow As Long, Rng As Range
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws3 = ThisWorkbook.Sheets("Sheet3")
lRow = ws3.Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = ws1.Range("A1").CurrentRegion
Rng.AutoFilter Field:=2, Criteria1:=ws1.Range("M15").Value
ws1.Range(Cells(2, 1), Cells(Rng.Rows.Count, 10)).SpecialCells(xlCellTypeVisible).Copy _
Destination:=ws3.Range("A" & lRow + 1)
'You must clear the range and then remove the filter before deleting blank cells.
ws1.Range(Cells(2, 1), Cells(Rng.Rows.Count, 10)).SpecialCells(xlCellTypeVisible).Clear
ws1.Cells.AutoFilter
ws1.Range(Cells(2, 1), Cells(Rng.Rows.Count, 10)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp