Групування міток та об'єднання їхніх текстових значень (як зведена таблиця)


22

У мене є електронна таблиця з такими даними:

Продукт | Атрибут
---------- + ----------
Продукт А | Блакитний
Продукт B | Блакитний
Продукт C | Блакитний
Продукт А | Пурпуровий
Продукт C | Пурпуровий
Продукт B | Жовтий
Продукт C | Жовтий
Продукт А | Чорний
Продукт B | Чорний

Що я хотів би згрупувати все за стовпцем A і в стовпці B - це список, розділений комами, спільним значенням, які мають спільний стовпець A, наприклад:

Продукт | Атрибут
---------- + --------------------------
Продукт А | Блакитна, пурпурова, чорна
Продукт B | Блакитний, жовтий, чорний
Продукт C | Блакитна, пурпурова, жовта, чорна

На жаль, зведені таблиці знають лише, як працювати зі значеннями чисел, а найдалі це спрямовано до підрахунку кількості разів, що виникає у стовпці А.

Мені вдалося вивести це в кінцевому підсумку, імпортувавши дані в базу даних MySQL та використовуючи GROUP_CONCAT(Attribute)функцію MySQL у запиті з GROUP BY Productпунктом, але після того, як кілька разів стукав головою об стіл, намагаючись розібратися у рішенні Excel.

Для подальшої довідки, чи можливо це в Excel без макросів? Так чи ні, як би це зняти?

Відповіді:


31
   |     A     |     B
---+-----------+-----------
 1 |  PRODUCT  | ATTRIBUTE
 2 | Product A | Cyan
 3 | Product B | Cyan
 4 | Product C | Cyan
 5 | Product A | Magenta
 6 | Product C | Magenta
 7 | Product B | Yellow
 8 | Product C | Yellow
 9 | Product A | Black
10 | Product B | Black

Припустимо, що рядок 1: 1 - це заголовок.

  1. Сортувати за стовпцем А до групи за продуктами

  2. Підготуйте дані у розділеному комою форматі у стовпці С , ввівши у С2 наступну формулу та скопіюйте до С3: С10.

    =IF(A2<>A1, B2, C1 & "," & B2)
    
  3. Визначте корисні рядки , ввівши D2 =A2<>A3та скопіюйте до D3: D10.

  4. Скопіюйте стовпчик C: D, а потім вставте спеціальне як значення ( AltE- S- V- Enter). Тепер ви отримаєте:

    Product A    Cyan       Cyan                   FALSE
    Product A    Magenta    Cyan,Magenta           FALSE
    Product A    Black      Cyan,Magenta,Black     TRUE
    Product B    Cyan       Cyan                   FALSE
    Product B    Yellow     Cyan,Yellow            FALSE
    Product B    Black      Cyan,Yellow,Black      TRUE
    Product C    Cyan       Cyan                   FALSE
    Product C    Magenta    Cyan,Magenta           FALSE
    Product C    Yellow     Cyan,Magenta,Yellow    TRUE
    
  5. Видаліть непотрібні рядки , фільтруючи FALSEу стовпці D за допомогою автофільтра, а потім видаліть ці рядки.

  6. Закінчити . Стовпець A & C - те, що вам потрібно.


1
Це використання вашої фантазії! Вітаю!
jorgebg

Хоча це працює, часи змінилися з 2012 року. Подивіться нижче на нову відповідь, яка використовує надбудову PowerQuery (яка вбудована в Excel 2016). Не може бути простіше. Ну, можливо, поговоримо з комп’ютером і попросили "згрупувати мої дані!" Може, ще через 6 років.
ripvlan

11

Я знаю, що це старий пост, але у мене сьогодні був цей виклик. Я використовував надбудову PowerQuery від Microsoft (ПРИМІТКА: вона вбудована в Excel 2016 за замовчуванням).

  1. Виберіть свою таблицю
  2. На вкладці "ЗАПИТАННЯ СИЛУ" (або ДАНІ в 2016 році) виберіть "З таблиці"
  3. Клацніть на стовпці "Продукт"
  4. на вкладці "Перетворити" виберіть "Групувати за"
  5. На вкладці «Перегляд» переконайтесь, що «Положення формули» встановлено
  6. Змініть формулу

    ВІД:

    = Table.Group(#"Changed Type", {"Product"}, {{"Count", each Table.RowCount(_), type number}})
    

    ДО:

    = Table.Group(#"Changed Type", {"Product"}, {{"Attributes", each Text.Combine([Attribute], ", "), type text}})
    

    Клацніть тут, щоб зобразити кроки зверху

Етап 6 - використання формул запиту на владу (M) для виконання маніпуляцій з даними, не підданих впливу основних операцій, передбачених в інтерфейсі користувача. Microsoft має повну посилання, доступну в Інтернеті, для всіх розширених функцій, доступних у Power Query.


Дуже елегантне рішення, мабуть, найкраще з усіх.
асдмін

@matt poland, мені цікаво, чи знаєш ти, як також видалити дублікати значень уздовж рядків, використовуючи цей досить дивовижний трюк?
Лана Б

На кроці 1 (після вибору таблиці) ви повинні мати можливість перейти на вкладку «Дані» на стрічці та натиснути «Видалити копії».
Метт Польща

У програмі Power Query є ще одна можливість, якщо ви не хочете змінювати свою оригінальну таблицю. Після КРОК 2 ви можете утримувати CTRL і натискати обидва стовпчики, щоб обидва були обрані. Потім клацніть правою кнопкою миші один із стовпців і виберіть "Видалити копії". Потім перейдіть до КРОК 3.
Метт Польща

Дякую! Це найкраща відповідь. Для тих, хто використовує Excel 2016, вбудований PowerQuery. Просто натисніть на вкладку Дані та натисніть "З таблиці / Діапазону" у розділі "Отримати та перетворити дані". Відкриється редактор запитів живлення, натисніть вкладку Перегляд та увімкніть панель формул. Решта інструкцій працюють як є.
ripvlan

3

Ось пара підходів, як "немакрос" ...

  1. За допомогою невеликого набору даних, попередньо відсортувавши його за продуктом (подібним до GROUP BY Product), ви могли спочатку скопіювати стовпець «Продукт», вставити його в інше місце, а потім видалити дублікати. Далі скопіюйте "Атрибути" для кожного продукту та "Наклейте спеціальний, ПРОЗОРОЗ" поруч із кожним продуктом. Потім з'єднайте кому з кожним вашим перенесеним атрибутом у стовпчик остаточних результатів. Справді, все це "копіювати / вставляти спеціальне / переміщувати" швидко старіє, якщо у вас довгий список продуктів.

  2. Якщо у вас багато даних, за допомогою декількох формул ви можете пропрацювати свій результат до кінцевого результату, як показано нижче. Формули у F2, G2, H2, I2 та N2 позначені синіми стрілками. Скопіюйте їх у рядки нижче за потребою. Зауважте, що J2: L2 використовують ту саму формулу, що і I2. Також формула F2 посилається на названий діапазон "Продукти", який охоплює діапазон A: A.

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


Це хороші рішення, хоча лише якщо набір даних невеликий, як ви кажете. Спасибі!
p0lar_bear
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.