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


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.