VBA или формула Excel для агрегирования данных - PullRequest
0 голосов
/ 03 марта 2019

У меня есть таблица в Excel, в которой есть список компаний и различных людей, которые работают в компаниях, каждая компания может иметь 5-7 человек, связанных с компанией.таблица структурирована как название компании, person1, person 2 ... в ячейках

Мне нужен подход в формуле VBA или Excel, в котором на основе этой таблицы я хочу, чтобы названия компаний были связаны с каждым человекомнапример,person1 - список всех компаний, над которыми он работает, в ячейках под его именем.

У меня есть базовые знания VBA, любой подход или решение высоко ценится.

Мне не разрешено вставлять изображенияеще.поэтому таблица источника ссылки: 1 : https://i.stack.imgur.com/gMyy8.png

enter image description here

Желаемый вывод: 1 : https://i.stack.imgur.com/x8QxU.png

enter image description here

1 Ответ

0 голосов
/ 03 марта 2019

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

enter image description here

В противном случае, если вы хотя бы знаете все имена людей, Я бы предложил следующий вид цикла в 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

Для этого сценария у вас уже должен быть второй лист, в котором первая строка состоит из имен людей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...