Ваша проблема в том, что
Set y = .Range(.Range("A2"), .Range("A2").End(xlDown))
устанавливает y
в диапазон от A2
до ячейки выше первая пустая ячейка Примечание 1
передайте это для использования End(XlUp)
из нижней части листа
Set y = .Range(.Range("A2"), .Cells(.Rows.Count, 1).End(xlUp)) ' .Range("A2").End(xlDown))
Примечание 1. Строго говоря, то, что копируется, будет зависеть от того, будет ли пустая ячейка A3
.