У меня есть таблица:
Company 1 | ID1
Company 1 | ID2
Company 1 | ID3
Company 2 | ID4
Company 2 | ID5
Company 2 | ID6
Company 3 | ID7
Company 3 | ID8
Company 3 | ID9
Мне нужно объединить каждую компанию в один ряд со всеми их идентификаторами в столбцах справа. В каждой компании может быть разное количество идентификаторов.
Конечный результат будет выглядеть так:
Company 1 | ID1 | ID2 | ID3
Company 2 | ID4 | ID5 | ID6
Company 3 | ID7 | ID8 | ID9
Как я мог сделать это? Желательно с VBA.
microsoft-excel
worksheet-function
vba
Oliver Yasuna
источник
источник
Ответы:
Это решение с единой формулой предполагает, что каждая компания имеет одинаковое количество строк:
Введите следующую формулу в
D2
и ctrl-enter / copy-paste / fill-down & amp; прямо в остальной части таблицы:Обратите внимание, что эта формула будет работать для любого (идентичного) числа строк для каждой компании и будет корректно корректироваться при добавлении / удалении строк или столбцов.
Однако формула будет нарушена, если таблица, в которой она находится, будет скопирована / вырезана и вставлена в другое место.
$D$2
Необходимо изменить ее, чтобы она соответствовала верхней левой ячейке данных нового местоположения таблицы, чтобы она снова работала правильно.Если для каждой компании существует переменное количество строк, требуется одна формула:
источник
Вот альтернатива VBA:
Просто измените константы в верхней части кода в соответствии с вашей ситуацией.
источник
Как это устроено:
Запишите эту формулу массива в ячейке C2 для создать уникальный список компаний :
Нотабене Завершите приведенную выше формулу Ctrl + Shift + Enter & Амп; заполните его.
Запишите эту формулу массива в ячейке D2, завершите Ctrl + Shift + Enter а также заполните прямо тогда вниз.
Заметка,
Эта формула будет работать гладко, если есть переменная номер идентификаторов для каждой компании.
Вы получите список идентификаторов в столбцах, как показано на снимке экрана.
источник