首页 > 解决方案 > 在excel中将重复的行压缩到不同的列中

问题描述

我在 excel 中有一个电子表格,它是合并两个查询以将项目与其类别匹配的结果。在这种情况下,它看起来像这样(使用食物及其类别作为基本示例):

原始数据

这样做是为了让我可以看到某些人存在哪些类别(在这种情况下由膳食 A、B、C 等表示)。我只关心某些类别,因此任何未分类的食物都可以从列表中删除(如蜂蜜或燕麦片)。我想组织我的数据,以便删除任何相同的行,并且任何不同的食物类别在列中彼此相邻堆叠,例如:

清理过的数据

在我的实际电子表格中,我有几千个值要处理,所以大规模工作的东西将有助于清理这些数据。有什么建议么?谢谢!

标签: excelexcel-formuladata-cleaning

解决方案


这里有一些 M 代码,可以根据您的原始数据产生您想要的结果。

“魔法”在Table.Group命令/聚合中

如果您有不同数量的食物类别,可能需要对拆分器步骤进行一些修改,以便生成正确数量的列:

let
    Source = Excel.CurrentWorkbook(){[Name="Table20"]}[Content],
    //#"Changed Type" = Table.TransformColumnTypes(Source,{{"Meal", type text}, {"Food", type text}, {"Food Category", type text}}),
    
    #"Grouped Rows" = Table.Group(Source, {"Meal"}, {
        {"Food Category", each Text.Combine(
            List.RemoveNulls(
                List.Sort(
                    (List.Distinct([Food Category])))),";")}
    }),
    
    #"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "Food Category", 
        Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Food Category.1", "Food Category.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",
        {{"Food Category.1", type text}, {"Food Category.2", type text}})
in
    #"Changed Type1"

数据
在此处输入图像描述

结果
在此处输入图像描述


推荐阅读