Mcode,使用Excel的Power Query操作数据表。基于多个条件复制单元格

问题描述 投票:0回答:1

在 Excels Power Query 中,我有一个有点复杂的查询。在我正在处理的步骤中,我有一个名为“FinalTable”的表,我需要将数据从“C003”列中的单元格复制到同一列中的另一行。

要复制的单元格基于“C001”列中的值,要复制到的单元格基于“C002”列中的值 这是一个示例表。

C001 C002 C003
场外 E. Florence Blvd 10462
地层:CL/SC
层数:SC-SM/SP/SM
地层:结束
场外 E. Florence Blvd:地层总计

目标是将(1,C003)中的数据复制到(5,C003)。这需要以编程方式完成,但是因为我将有不同的数据集,而这只是一个小样本。

为了实现此目的,我需要对非空白值的“C001”列进行评估。如果存在非空白值,则检查该值是否是“C002”列中单元格的子字符串如果是复制“C003”的值

结果表应如下所示:

C001 C002 C003
场外 E. Florence Blvd 10462
地层:CL/SC
层数:SC-SM/SP/SM
地层:结束
场外 E. Florence Blvd:地层总计 10462

我之前完成过类似的任务,但跨行移动数据,而不是在列上上下移动数据。我还尝试制作第二个表,它是数据的子集,删除了不需要的所有行和列,然后将其用作参考来尝试检查,但我似乎无法让它工作。

非常感谢任何帮助,谢谢。

excel powerquery m
1个回答
0
投票

单向

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Duplicated Column" = Table.DuplicateColumn(Source, "C001", "zC001"),
#"Duplicated Column1" = Table.DuplicateColumn(#"Duplicated Column", "C003", "zC003"),
#"Filled Down" = Table.FillDown(#"Duplicated Column1",{"zC001", "zC003"}),
#"Added Custom" = Table.AddColumn(#"Filled Down", "Custom", each try if Text.Contains([C002],[zC001]) then [zC003] else null otherwise null),
#"Renamed Columns" = Table.RenameColumns(#"Added Custom",{{"C003", "xC003"}}),
#"Added Custom1" = Table.AddColumn(#"Renamed Columns", "C003", each [xC003] ?? "" & Text.From([Custom]) ?? ""),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"C003"}),
#"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Removed Columns", {{"xC003", type text}, {"Custom", type text}}, "en-US"),{"xC003", "Custom"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"C003"),
#"Removed Columns1" = Table.RemoveColumns(#"Merged Columns",{"zC001", "zC003"})
in  #"Removed Columns1"

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.