Excel - сводные значения в одной ячейке (в виде значения через запятую)

11

Excel - сводные значения в одной ячейке (в виде значения через запятую)

У меня есть два столбца данных:

Supplier1 | Product1
Supplier1 | Product2
Supplier1 | product4
Supplier1 | Product7
Supplier2 | Product3
Supplier2 | Product5

Я хочу «развернуться» вокруг Поставщика и дать список продуктов в одной ячейке, разделенных запятыми, например

Supplier1 | Product1, Product2, product4, Product7
Supplier2 | Product3, Product5

Там около 1000 поставщиков, и 0 <продукты <= 10.

Мой текущий обходной путь включает в себя использование сводных таблиц, сохранение в формате CSV и т. Д., И он очень грязный. Решение не VBA было бы удивительно.

Крис
источник
Вам нужен SQL-запрос, чтобы сделать это легко. Можете ли вы экспортировать в базу данных некоторые описания?
Рис Гибсон

Ответы:

23

Вот решение без VBA, не сводная таблица, которая использует только несколько формул.

  1. Во-первых, я использовал «Text-to-columns», чтобы разделить ваши данные с этим разделителем «pipe» (вертикальная линия) на 2 столбца; столбец «Поставщик» и столбец «Продукт». Те идут в столбцах A и B, соответственно. (В вашем сообщении говорится, что они объединены в один столбец, поэтому я сначала разделил их на части. Вам не нужно этого делать.)

  2. В столбце C, который я назвал столбцом «Конкатенация», я использовал эту формулу, начиная с ячейки C2 и копируя до конца: = IF (A2 = A1, C1 & "," & B2, A2 & "|" & B2)

  3. В столбце D, который я назвал "SupplierChangesAtNextLine?" Я использовал эту формулу (начиная с D2 и копируя полностью): = IF (A2 = A3, "", "Changed")

  4. Теперь вы сможете фильтровать столбец D только по «измененным» значениям.

Удачной охоты!

F106dart
источник
1
C1  C2  C3          C4
a   1   1   
a   2   2,1 
a   3   3,2,1   
a   5   5,3,2,1 
a   3   3,5,3,2,1   New
b   11  11  
b   13  13,11   
b   11  11,13,11    
b   14  14,11,13,11 New
c   22  22  
c   24  24,22       New
f   25  25  
f   11  11,25   
f   10  10,11,25    New
  1. В col3 (означает C3) используйте формулу = IF (A2 = A1, B2 & "," & C1, B2), начиная ячейку C2 и перетащите ее вниз.
  2. в C4 (означает столбец 4) используйте формулу = IF (A2 = A3, "", "change"), начиная ячейку D2 и перетаскивая ее вниз.
  3. Отфильтруйте на New на C4 (означает col4), и вы получите желаемый результат.
Аргья Тарафдар
источник
0

Добавить столбец C в качестве счетчика *: = COUNTIF (A $ 2: A $ 528, A2)
Добавить D в качестве приращения * = IF (A2 = A1, D1 + 1, 1)
Добавить E в сцепление *: = IF (A1 = A2, E1 & "," & B2, B2)
Добавьте F, чтобы сохранить только последний конкат : = IF (AND (C2 = D2, E4 <> ""), E4, "")
Примечание
добавьте в ячейку 2 и опустите (или дважды щелкните в правом углу), чтобы применить формулу для всех ячеек в столбце

скопировать и вставить как значения в другой лист, отсортировать по убыванию F, удалить остальные

Conete_Cristian
источник
слишком много дел ... Решение F106dart более элегантно.
Ihightower