Excel — перемещение данных из дублирующихся строк в новые столбцы

Excel — перемещение данных из дублирующихся строк в новые столбцы

У меня есть дублирующиеся строки, представляющие клиентов, которые купили разные товары. Купленные товары находятся в одном столбце. Я хотел бы переместить их в отдельные столбцы, чтобы иметь возможность импортировать в другую программу. Поэтому мои данные выглядят примерно так:

загруженный скриншот Excel

John  book          
John  ball          
John  bat           
Tom   book          
Tom   bat           
Kate  ball

Я бы хотел, чтобы данные о приобретенных товарах были перенесены в отдельные столбцы, например так:

John   book   ball   bat

Tom    book    -     bat

Kate    -     ball    -

Где каждая книга, мяч и бита имеют свою собственную колонку.

решение1

Эта формула, заполненная сверху вниз A8, выведет список имен клиентов, удалив дубликаты:

=IFERROR(INDEX($A$1:$A$6,MATCH(0,COUNTIF(A$7:A7,$A$1:$A$6),0)),"")

Это формула массива, поэтому ее необходимо вводить с помощью CTRLShiftEnter, а не просто Enter.

Эта формула, заполненная справа и снизу от B8, выведет список покупок каждого клиента:

=IF(SUMPRODUCT(($A$1:$A$6=$A8)*($B$1:$B$6=INDEX($B$1:$B$3,COLUMN(A1))))>0, INDEX($B$1:$B$3,COLUMN(A1)),"")

введите описание изображения здесь

Обратите внимание, что последняя формула основана на том факте, что B1:B3это упорядоченный список покупок. Это, вероятно, совпадение, и подобный список может быть расположен где угодно. Если бы список был горизонтальным, а не вертикальным, формула была бы проще. Допустим, список находится в E1:G1, тогда формула будет такой:

=IF(SUMPRODUCT(($A$1:$A$6=$A8)*($B$1:$B$6=E$1))>0,E$1,"")

А формула массива, аналогичная первой, заполненная прямо из E1, могла бы перечислить покупки там:

=IFERROR(INDEX($B$1:$B$6,,MATCH(0,COUNTIF($D1:D1,$B$1:$B$6),0)),"")

Связанный контент