这也可以通过电源查询来完成。我使用了右侧表格中的不同 ID 值,但它应该仍然可以正常工作。
- 创建一个表,其 ID 在 Col1 中,要在 Col2 中返回的值
- 在 Power Query 中打开表(数据选项卡 > 通过 从表/范围获取和转换数据。
如果没有电源查询,reference this Complete Guide to Installing Power Query.
Power Query 步骤
-
更改 Col 的类型:要返回到 text
的值
-
Split Col: ID by Delimeter = ','
-
您知道应该有多个 ID 列 (ID.X)。选择所有 ID 列 > 右键单击标题 > 选择 Unpivot Other Columns
-
删除所有不必要的列
-
选择包含您所有 ID 的列 > 右键单击并选择 Group By
-
在新列名下,输入新的列标题。将运算更改为Sum。对于列,选择包含要返回的值
的列
-
下一步请参考this guide。您需要在公式栏中手动配置 M 代码并将公式从 List.Sum([COL]).. 更改为 Text。合并([COL], ",")..
-
最后一步是确保您的新列是文本列,而不是数字。
我附上了copy of my workbook,希望对您有所帮助。如果没有,我已经从下面的高级编辑器中粘贴了我的代码,以防万一。请务必根据您的工作簿相应地更新表和列名称。
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", type text}, {"Value to be returned", type text}}),
#"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "ID", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"ID.1", "ID.2", "ID.3"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"ID.1", type text}, {"ID.2", type text}, {"ID.3", type text}}),
#"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type1", {"Value to be returned"}, "Attribute", "Value"),
#"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Value", "Value to be returned"}),
#"Grouped Rows" = Table.Group(#"Reordered Columns", {"Value"}, {{"Value.1", each Text.Combine([Value to be returned], ", "), type number}}),
#"Changed Type2" = Table.TransformColumnTypes(#"Grouped Rows",{{"Value.1", type text}})
IN
#"Changed Type 2"
让我知道这是否可行,或者如果您有任何后续问题。