以动态创建以更改数据的列为条件
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"
正在寻找一种方法来更改基于另一列的列值,但我要更改的列是动态创建的,因此在 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"