需要在一个查询/步骤中的给定列中替换文本字符串中的多个值

问题描述 投票:0回答:1

问题陈述: 我想仅在找到时替换文本字符串中的多个值,所有这些都一步完成。 示例:在我的 8000 行列中, 我想在文本字符串中用 *40 替换 @ 符号,例如 [email protected]

我想将“Org”替换为“Com”

仅当文本以 CP-ZI 开头时,我才想将 CP-ZI 替换为 CP-PREF-ZI

仅当文本以 CP-ZE 开头时,我才想用 CP-PREF-ZE 替换 CP-ZE

仅当文本以 CP-ZL 开头时,我才想将 CP-ZL 替换为 CP-PREF-ZL

更详细:我有多个这样的值,需要针对给定列进行替换。我希望能够使用一个查询完成所有替换,而不是创建多个替换查询。

我不想替换整个单元格内容。只有部分文本字符串,如上面示例中共享的那样。

请帮助我构建一个 M 查询来解决这个问题。

我的专栏看起来像这样:

在此输入图片描述

我尝试了以下 M 查询:

= Table.ReplaceValue(#"Remark Replace @ to *40",each [Remark], each if [Remark] = "CP-ZI" then "CP-PREF-ZI" else if [Remark] = "CP-ZE" then "CP-PREF-ZE" else if [Remark] = "CP-ZL" then "CP-PREF-ZL" else if [Remark] = "CP-SX" then "CP-PREF-SX" else if [Remark] = "CP-ET" then "CP-PREF-ET" else if [Remark] = "CP-ZD" then "CP-PREF-ZD" else if [Remark] = "CP-EP" then "CP-PREF-EP" else if [Remark] = "CP-AL" then "CP-PREF-AL" else if [Remark] = "CP-IL" then "CP-PREF-IL" else [Remark], Replacer.ReplaceText,{"Remark"})

然后我尝试了 text.Contains,但这并不能取代任何内容:(

= Table.ReplaceValue(#"Remark Replace CP-ZI to CP-PREF-ZI",each [Remark], each if Text.Contains([Remark], "¤") then "*40" else if Text.Contains([Remark], "@") then "*40" else [Remark], Replacer.ReplaceText,{"Remark"})
replace powerquery
1个回答
0
投票
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],

    TransformedTable = Table.TransformColumns(Source, {{"My column", each 
        let
            textWithSymbolReplaced = Text.Replace(_, "@", "*40"),
            textWithOrgReplaced = Text.Replace(textWithSymbolReplaced, "Org", "Com"),
            textWithCPZIReplaced = if Text.StartsWith(textWithOrgReplaced, "CP-ZI") then Text.Replace(textWithOrgReplaced, "CP-ZI", "CP-PREF-ZI") else textWithOrgReplaced,
            textWithCPZEReplaced = if Text.StartsWith(textWithCPZIReplaced, "CP-ZE") then Text.Replace(textWithCPZIReplaced, "CP-ZE", "CP-PREF-ZE") else textWithCPZIReplaced,
            textWithCPZLReplaced = if Text.StartsWith(textWithCPZEReplaced, "CP-ZL") then Text.Replace(textWithCPZEReplaced, "CP-ZL", "CP-PREF-ZL") else textWithCPZEReplaced
        in
            textWithCPZLReplaced
    }})
in
    TransformedTable
© www.soinside.com 2019 - 2024. All rights reserved.