以动态创建以更改数据的列为条件

Conditional on columns created dynamically to change data

正在寻找一种方法来更改基于另一列的列值,但我要更改的列是动态创建的,因此在 power 查询中不是很简单。这是我之前问到这部分的问题,现在我又被卡住了。

Table之前

True/False DynamicColName1 DynamicColName2 ... DynamicColNameX
True 50 60 ... ###
False 50 60 ... ###
False 50 60 ... ###
False 50 60 ... ###
True 50 60 ... ###

...只是为了显示由于 headers 的动态范围,列可以是 X 长。 ### 表示它可以是任何值。在这种情况下无关紧要。

这就是我希望 table 现在显示的内容。如果 True/False col = False 则动态列中的值变为 0。如果为 True 则保持不变

Table 在

之后
True/False DynamicColName1 DynamicColName2 ... DynamicColNameX
True 50 60 ... ###
False 0 0 ... 0
False 0 0 ... 0
False 0 0 ... 0
True 50 60 ... ###

添加索引,Unpivot,添加一个 if/then 语句,然后 repivot

完整示例代码:

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Replaced Value" = Table.ReplaceValue(Source,null,0,Replacer.ReplaceValue,List.RemoveFirstN(Table.ColumnNames(Source),1)),
#"Added Index" = Table.AddIndexColumn(#"Replaced Value", "Index", 0, 1, Int64.Type),
#"Changed Type" = Table.TransformColumnTypes(#"Added Index",{{"True/False", type logical}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"True/False", "Index"}, "Attribute", "Value"),
#"Added Custom" = Table.AddColumn(#"Unpivoted Other Columns", "Custom", each if  [#"True/False"]  then [Value] else 0),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Value"}),
#"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Attribute]), "Attribute", "Custom", List.Sum),
#"Sorted Rows" = Table.Sort(#"Pivoted Column",{{"Index", Order.Ascending}}),
#"Removed Columns1" = Table.RemoveColumns(#"Sorted Rows",{"Index"})
in  #"Removed Columns1"