10

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 было бы удивительно.

3 ответа3

20

Вот решение без 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 только по "измененным" значениям.

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

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. Выберите "Новый" на 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, удалить остальные

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .