问题描述
我正在尝试用表中的列名(每列的数目未知但至少2列)替换每列(前2列除外)中的“ x”。
我找到了更改一列的代码,但我希望它是动态的:
#"Ersatt värde" = Table.ReplaceValue(Källa,"x",Table.ColumnNames(Källa){2},Replacer.ReplaceText,{Table.ColumnNames(Källa){2}})
有任何解决方法的想法吗?
解决方法
如果我理解正确,我认为您可以尝试以下两种方法:
#"Ersatt värde" =
let
columnsToTransform = List.Skip(Table.ColumnNames(Källa),2),accumulated = List.Accumulate(columnsToTransform,Källa,(tableState as table,columnName as text) =>
Table.ReplaceValue(tableState,"x",columnName,Replacer.ReplaceText,{columnName})
)
in accumulated
或:
#"Ersatt värde" =
let
columnsToTransform = List.Skip(Table.ColumnNames(Källa),transformations = List.Transform(columnsToTransform,(columnName) => {columnName,each
Replacer.ReplaceText(Text.From(_),columnName)}),transformed = Table.TransformColumns(Källa,transformations)
in transformed,
两种方法都遵循类似的方法:
- 找出要替换的列(即除前2列以外的所有列)
- 重叠上一步中确定的列并实际进行替换。
- 我使用了
Replacer.ReplaceText
,因为这就是您在问题中所使用的语言,但是我相信这将取代部分匹配和完全匹配。 - 如果您只想替换完全匹配项,我想您可以改用
Replacer.ReplaceValue
。