Если бы вы могли изменить свои данные, как на картинке с двумя столбцами, вы все равно могли бы использовать сводную таблицу, чтобы получить список компаний на человека.Например, фильтруя, как на картинке (извините за голландский макет).

В противном случае, если вы хотя бы знаете все имена людей, Я бы предложил следующий вид цикла в VBA
Dim ws as worksheet
Dim wst as worksheet
Dim i,j,k as long
Set ws = Thisworkbook.sheets("SheetNameData")
Set wst = Thisworkbook.sheets("SheetNameLists")
For i = 2 to ws.cells(rows.count,1).end(xlup).row 'Assuming you have headers, start at row 2
For j = 2 to ws.cells(i,columns.count).end(xltoLeft).column 'Loop through all names in a companyrow
k = application.worksheetfunction.match(ws.cells(i,j).value,wst.range("1:1"),0) 'find the right column in the output worksheet
wst.cells(rows.count,k).end(xlup).Offset(1,0).value = ws.cells(i,1).value 'Place the companyname in the column of the right person
Next j
Next i
Для этого сценария у вас уже должен быть второй лист, в котором первая строка состоит из имен людей