Может быть что-то вроде этого:
Sub test()
n = Application.WorksheetFunction.CountIf(Range("A:A"), "D")
Set c = Range("A:A").Find("D", lookat:=xlWhole)
Range("A" & c.Row, Range("E" & c.Row).Offset(n - 1, 0)).Copy Destination:=Range("A2") 'change E as needed, depends how many column is your data
Set rngDel = Range("A1").Offset(n + 1, 0)
Range(rngDel, rngDel.End(xlDown)).EntireRow.Delete
End Sub
Перед запуском кода таблица данных должна быть сначала отсортирована по столбцу A.
Код подсчитает, сколько «D» находится в столбце A .
Затем он получает ячейку, в которой находит первую букву «D».
Оттуда он копирует все ячейки со значением «D»
, затем вставляет их в ячейку A2
, наконец, удаляет оставшиеся ячейки, у которых нет значения "D"