一起切成排

时间:2019-02-28 14:58:20

标签: excel powerbi powerquery

enter image description here

HI,

如您在图像中看到的,我要在4行中排成一行。每组值都有相同的订单号。

4 个答案:

答案 0 :(得分:1)

以此为起点:

enter image description here

点击enter image description here并输入Table.FromColumns({List.RemoveNulls(Source[Voorvehandeling]),List.RemoveNulls(Source[Proces]),List.RemoveNulls(Source[Laagdikte]),List.RemoveNulls(Source[Kleur])},{"Voorvehandeling","Proces","Laagdikte","Kleur"})

就这样:

enter image description here

我的M代码是:

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Custom1 = Table.FromColumns({List.RemoveNulls(Source[Voorvehandeling]),List.RemoveNulls(Source[Proces]),List.RemoveNulls(Source[Laagdikte]),List.RemoveNulls(Source[Kleur])},{"Voorvehandeling","Proces","Laagdikte","Kleur"})
in
Custom1

答案 1 :(得分:1)

好吧,我模拟了一个数据集,使其看起来像您的数据集:

enter image description here

您将需要一种对行进行分组的方法。如果您有方便的话,可以在数据集中使用一个值,也可以像这样建立自己的值:添加索引。将索引除以每个“行组”中的行数或位数,然后将结果截断为整数。在索引上的起始编号处稍作调整,以将四舍五入以将分组数字放在需要的位置。

enter image description here

在电源查询中使用“分组依据”按钮-您可以在“主页”和“变换”功能区中找到它。按行共享的值分组。为每个列创建一个聚合,并使用“最大”聚合。这将从每个行集中获取非null值。

enter image description here

VOILA!

enter image description here

希望有帮助。

答案 2 :(得分:1)

还有另一种方法可以解决@Ryan在我先前的回答中指出的问题。

我从这里开始:

enter image description here

请注意,Laagdikte没有针对第一组四行的条目,该行将成为第一条记录。这是为了说明是否包含有意的空值。

然后我添加了一个索引。 ...然后我添加了一个模数:

enter image description here enter image description here

然后,我更改了GUI为模进行的代码。我将其从Table.TransformColumns(#"Added Index", {{"Index", each Number.Mod(_, 4), type number}})更改为Table.AddColumn(#"Added Index", "Modulo", each Number.Mod([Index], Table.ColumnCount(Source)), type number)这会将设置从硬编码4更改为表的列数。

enter image description here

然后我添加了一个包含以下代码的列:if [Modulo] = 0 then [Index] else null,它恰好与使用以下设置添加条件列相同:

enter image description here

enter image description here

然后我选择“自定义”列并填写:

enter image description here

然后我使用count在“自定义”列上分组,然后将结果代码编辑为:Table.Group(#"Filled Down", {"Custom"}, {{"Voorvehandeling", each List.RemoveNulls([Voorvehandeling]), type text}, {"Proces", each List.RemoveNulls([Proces]), type text}, {"Laagdikte", each List.RemoveNulls([Laagdikte]), type text}, {"Kleur", each List.RemoveNulls([Kleur]), type text}})

enter image description here

然后,我在此列中添加了以下代码:Table.FromColumns({[Voorvehandeling],[Proces],[Laagdikte],[Kleur]},{"Voorvehandeling","Proces","Laagdikte","Kleur"})

enter image description here

然后,我删除了所有新的Tableed列:

enter image description here

最后,我展开了Table列:

enter image description here

请注意,占Laagdikte中的null。

哦...我很抱歉在两个答案中都把Voorbehandeling拼错为Voorvehandeling。至少我是一致的。 ;)

这是M代码:

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
#"Inserted Modulo" = Table.AddColumn(#"Added Index", "Modulo", each Number.Mod([Index], Table.ColumnCount(Source)), type number),
#"Added Custom" = Table.AddColumn(#"Inserted Modulo", "Custom", each if [Modulo] = 0  then [Index] else null),
#"Filled Down" = Table.FillDown(#"Added Custom",{"Custom"}),
#"Grouped Rows" = Table.Group(#"Filled Down", {"Custom"}, {{"Voorvehandeling", each List.RemoveNulls([Voorvehandeling]), type text}, {"Proces", each List.RemoveNulls([Proces]), type text}, {"Laagdikte", each List.RemoveNulls([Laagdikte]), type text}, {"Kleur", each List.RemoveNulls([Kleur]), type text}}),    
#"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Tabled", each Table.FromColumns({[Voorvehandeling],[Proces],[Laagdikte],[Kleur]},{"Voorvehandeling","Proces","Laagdikte","Kleur"})),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom1",{"Tabled"}),
#"Expanded Tabled" = Table.ExpandTableColumn(#"Removed Other Columns", "Tabled", {"Voorvehandeling","Proces","Laagdikte","Kleur"}, {"Voorvehandeling","Proces","Laagdikte","Kleur"})
in
#"Expanded Tabled"

答案 3 :(得分:0)

1-如果在Power BI Desktop中工作,请单击“主页”功能区中的“编辑查询”按钮。这将打开查询编辑器。

2-按住键盘上的Shift键,然后单击要合并的列的列标题(在您的情况下,我想您要使用Voorbehandling,Proces,Laagdikte和Kleur)。这应该突出显示/选择所有相关列。

3-单击页面顶部的“添加列”功能区。单击“合并列”按钮。这将弹出一个对话框,允许您指定合并列的方式(添加定界符等)

Click to see where to find the "Merge Columns" button