我有表A列有具体人员执行任务的数据如下:

我有表B提供了特定人在不同时期的需求数据如下:

我还有另一份表C,其期间定义如下:
Period no | Date from | Date to
--------------------------------------
1 | 27/01/2021 | 24/02/2021
2 | 25/02/2021 | 24/03/2021
...这里有两个问题:
。
所以现在我想把表A和表B合并起来,比较每个时期的需求和交付的情况。问题是如何处理这个问题?我的第一个想法是将列添加到表A中,用于期间和数量,以便能够对其进行分组和合并--但是当这个部署可以跨越多个时间段时呢?另外,如何在期间内实现这个条件逻辑?
发布于 2020-12-16 13:58:15
我觉得这个很管用
将期间定义为Table1
使用公式添加自定义列
= {Number.From([Date from])..Number.From([Date to])}然后把它扩展到行。这给了你一个匹配的每个日期到每一个周期。

档案..。关闭并装载..。连接
该部分的完整示例代码如下:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Period no", Int64.Type}, {"Date from", type date}, {"Date to", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each {Number.From([Date from])..Number.From([Date to])}),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Date from", "Date to"})
in #"Removed Columns"拉进你的TableA,叫做Table2
添加具有类似公式的自定义列并展开为行。
= {Number.From([Start of Deployment]) .. Number.From([End of Deployment])}现在将另一个表合并到这个表中,并拉入句号。
单击“选择类型”和“期间”列并将其分组,从新的自定义列中提取最大日期和最小日期。

为使用公式的工作时间添加自定义列
= 1+[DayMax]-[DayMin]然后添加一个自定义列来应用您的algo。
= if [Duration]<6 then 0 else if [Duration] <15 then 0.5 else 1移除额外的列。好了。档案..。关闭并装载..。连接
您可以根据需要将其合并回表B中。

此表的完整代码
let Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Type", type text}, {"Start of Deployment", type date}, {"End of Deployment", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each {Number.From([Start of Deployment]) .. Number.From([End of Deployment])}),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Start of Deployment", "End of Deployment"}),
#"Merged Queries" = Table.NestedJoin(#"Removed Columns",{"Custom"},Table1,{"Custom"},"Table1",JoinKind.LeftOuter),
#"Expanded Table1" = Table.ExpandTableColumn(#"Merged Queries", "Table1", {"Period no"}, {"Period no"}),
#"Grouped Rows" = Table.Group(#"Expanded Table1", {"Type", "Period no"}, {{"DayMin", each List.Min([Custom]), type number}, {"DayMax", each List.Max([Custom]), type number}}),
#"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Duration", each 1+[DayMax]-[DayMin]),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Algo", each if [Duration]<6 then 0 else if [Duration] <15 then 0.5 else 1),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom2",{"DayMin", "DayMax", "Duration"})
in #"Removed Columns1"https://stackoverflow.com/questions/65314541
复制相似问题