Это решение с единой формулой предполагает, что каждая компания имеет одинаковое количество строк:

Введите следующую формулу в D2
и ctrl-enter/copy-paste/fill-down & right в остальной части таблицы:
=""&INDEX($A:$B,ROW($D$2)+3*INT(ROW()-ROW($D$2))+MAX(0,COLUMN()-COLUMN($D$2)-1),2-(COLUMN()=COLUMN($D$2)))
Обратите внимание, что эта формула будет работать для любого (идентичного) числа строк для каждой компании и будет корректно корректироваться при добавлении / удалении строк или столбцов.
Однако формула будет нарушена, если таблица, в которой она находится, будет скопирована / вырезана и вставлена в другое место. $D$2
необходимо изменить, чтобы они соответствовали верхней левой ячейке данных нового местоположения таблицы, чтобы она снова работала правильно.
Если для каждой компании существует переменное количество строк, требуется одна формула:
=IFERROR(IF(COLUMN()=COLUMN($D$2),""&INDEX($A:$A,MATCH(D1,$A:$A,0)+COUNTIF($A:$A,D1)),INDEX(INDEX($B:$B,MATCH($D2,$A:$A,0)):INDEX($B:$B,MATCH($D2,$A:$A,0)+COUNTIF($A:$A,$D2)-1),COLUMN()-COLUMN($D$2))),"")
