Вместо
Worksheets("sheet1").Cells(Row, 2).Copy
Worksheets("Sheet1").Cells(Rows.Count, "I").End(xlUp).Offset(1, 0).PasteSpecial
ActiveSheet.Paste
Application.CutCopyMode = False
Вы можете попробовать
Worksheets("Sheet1").Cells(Rows.count,"I").End(xlup).offset(1,0).value = worksheets("Sheet1").Cells(Row,2).Value
Я думаю, что вы ссылаетесь на правую ячейку (последняя ячейка + 1 строка), но ActiveSheet.Paste
портитэто до.Рядом с этим копирование / вставка выполняется медленнее, чем просто получение значения.
РЕДАКТИРОВАТЬ: Если вы хотите начать с I20, но I19 не заполнен, вы можете сначала определить строку перед установкой значения:
Dim rowNum as Long
rowNum = application.worksheetfunction.max(20,Worksheets("Sheet1").Cells(Rows.count,"I").End(xlup).offset(1,0).Row)
Worksheets("Sheet1").Cells(rowNum,"I").Value = Worksheets("Sheet1").Cells(Row,2).Value