Категоризация предметов с именами в Excel - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь переставить матричные элементы, чтобы классифицировать элементы, соответствующие именам. Например:

Исходная матрица:

Name, item1, item2, item3 ... 

A,    apple, banana, cherry

B,    milk, apple, cherry

C,    milk, chocolate, apple

, а затем я хочу преобразовать эту матрицу в:

items, names

apple, A B C 

banana, A

cherry, A B

milk, B C

chocolate, C

В настоящее время я просто копирую и вставляюExcel, и это очень неэффективно. Есть ли способ классифицировать предметы?

1 Ответ

0 голосов
/ 15 октября 2019

Пожалуйста, обратитесь к этой статье , чтобы узнать, как использовать Power Query в вашей версии Excel. Он доступен в Excel 2010 Professional Plus и более поздних версиях . Моя демонстрация использует Excel 2016 .

Шаги:

  1. Добавить исходные данные в редактор мощных запросов;
  2. Выделить все Item столбцы, используйте функцию Unpivot Columns на вкладке Transform, чтобы отключить эти столбцы, затем отсортируйте таблицу по Value, затем по Name столбцу;
  3. Используйте Группировать поФункция на вкладке Transform позволяет группировать столбец Name по столбцу Value, как указано ниже:

Group By

Вернитесь к последнему шагу в разделе APPLIED STEPS справа и перейдите к строке формул, чтобы заменить эту часть формулы List.Sum([Name]) на Text.Combine([Name]," "); Закрыть и загрузить результат на новый рабочий лист (по умолчанию).

Если все ваши имена совпадают без каких-либо скрытых пробелов в начале или в конце строкив результате вы должны получить следующее:

Result

Вот мой Power Query M код для справки:

let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {" item1", type text}, {" item2", type text}, {" item3", type text}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Name"}, "Attribute", "Value"),
    #"Sorted Rows" = Table.Sort(#"Unpivoted Columns",{{"Value", Order.Ascending}, {"Name", Order.Ascending}}),
    #"Trimmed Text" = Table.TransformColumns(#"Sorted Rows",{{"Value", Text.Trim, type text}}),
    #"Cleaned Text" = Table.TransformColumns(#"Trimmed Text",{{"Value", Text.Clean, type text}}),
    #"Grouped Rows" = Table.Group(#"Cleaned Text", {"Value"}, {{"names", each Text.Combine([Name]," "), type text}})
in
    #"Grouped Rows"

Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1060 *

...