为包含 n 列的给定单词的所有单元格替换 table 中的文本

Replace text within a table for all cells that contain a given word for n columns

我在 table 中有数据,偶尔会输入文本来表示不可用或无数据等内容。我希望替换单元格包含 no 的每个实例,这是然后在 n 列中用 null 替换。我不知道输入的每种单词类型,但看起来每个要转换为 null 的单元格都包含 no 作为字符,所以我会使用这个。

有什么方法可以合并 `if text.contains([n columns],"no") then null else [n columns]

在 powerquery 中,这会删除包含 (No,NO,no,nO) 的任何单元格的内容并转换为空值

单击select第一列,右键单击,Unpivot other columns

单击 select 值列并转换 ... 数据类型 .. 文本

右键单击值列并转换...小写

我们真的不想这样,所以在公式栏中更改它

= Table.TransformColumns(#"Changed Type1",{{"Value", Text.Lower, type text}})

改为类似于此(也忽略了 No 的情况)

= Table.TransformColumns(#"Changed Type1",{{"Value", each if Text.Contains(_,"no", Comparer.OrdinalIgnoreCase) then null else _, type text}})

点击select属性栏

转换 ... 数据透视列

值column:Value,高级...不聚合

示例完整代码:

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Column"}, "Attribute", "Value"),
#"Changed Type1" = Table.TransformColumnTypes(#"Unpivoted Other Columns",{{"Value", type text}}),
#"CheckForNo" = Table.TransformColumns(#"Changed Type1",{{"Value", each if Text.Contains(_,"no", Comparer.OrdinalIgnoreCase) then null else _, type text}}),
#"Pivoted Column" = Table.Pivot(#"CheckForNo", List.Distinct(#"Lowercased Text"[Attribute]), "Attribute", "Value")
in  #"Pivoted Column"