Excel 增强查询-删除分隔符之间的文本

Excel 增强查询-删除分隔符之间的文本,excel,powerbi,powerquery,Excel,Powerbi,Powerquery,我想删除“()”之间的任何文本,包括“()”。 有许多不同的例子,我不能简单地找到和替换。 小例子:ABC(1) EFG(2) XYZ(1,2) 我希望显示 ABC EFG XYZ 找到本文,但函数的代码不再可见(至少在我尝试过的所有浏览器上) 我从一条注释中复制了代码,它似乎工作正常,但是当我调用列上的函数时,我得到了以下所有错误:“Expression.Error:指定的索引参数无效。 细节: 列表“ 有人有作者的代码吗?或者知道我做错了什么 以下是我运行函数后新自定义列中的代码: Tab

我想删除“()”之间的任何文本,包括“()”。 有许多不同的例子,我不能简单地找到和替换。 小例子:
ABC(1)
EFG(2)
XYZ(1,2)
我希望显示
ABC
EFG
XYZ

找到本文,但函数的代码不再可见(至少在我尝试过的所有浏览器上)

我从一条注释中复制了代码,它似乎工作正常,但是当我调用列上的函数时,我得到了以下所有错误:“Expression.Error:指定的索引参数无效。 细节: 列表“

有人有作者的代码吗?或者知道我做错了什么

以下是我运行函数后新自定义列中的代码:

 Table.AddColumn(#"Changed Type1", "N", each Query1([#"NEC(s)"], "(", ")", 1, null))

谢谢

这里有一个使用递归的不同解决方案

(txt as text) =>
[ 
fnRemoveFirstTag = (DELIM as text)=>
    let
        OpeningTag = Text.PositionOf(DELIM,"("),
        ClosingTag = Text.PositionOf(DELIM,")"),
        Output = 
            if OpeningTag = -1 
            then DELIM 
            else Text.RemoveRange(DELIM,OpeningTag,ClosingTag-OpeningTag+1)
    in
        Output,
fnRemoveDELIM = (y as text)=>
    if fnRemoveFirstTag(y) = y
    then y 
    else @fnRemoveDELIM(fnRemoveFirstTag(y)),
Output = @fnRemoveDELIM(txt) 
][Output]
它适用于示例数据,如果字符串中有多组以括号分隔的子字符串,它也应该适用


不知羞耻地从

复制并最小限度地修改这里有一个使用递归的不同解决方案

(txt as text) =>
[ 
fnRemoveFirstTag = (DELIM as text)=>
    let
        OpeningTag = Text.PositionOf(DELIM,"("),
        ClosingTag = Text.PositionOf(DELIM,")"),
        Output = 
            if OpeningTag = -1 
            then DELIM 
            else Text.RemoveRange(DELIM,OpeningTag,ClosingTag-OpeningTag+1)
    in
        Output,
fnRemoveDELIM = (y as text)=>
    if fnRemoveFirstTag(y) = y
    then y 
    else @fnRemoveDELIM(fnRemoveFirstTag(y)),
Output = @fnRemoveDELIM(txt) 
][Output]
它适用于示例数据,如果字符串中有多组以括号分隔的子字符串,它也应该适用


不知羞耻地从

中复制并进行了最低限度的修改(页面右侧是否有文本)

如果不是,只需在自定义分隔符(最左边)上拆分列,然后删除第二列

= Table.SplitColumn(Source, "Column1", Splitter.SplitTextByEachDelimiter({"("}, QuoteStyle.Csv, false), {"Column1.1", "Column1.2"})
或者变换列以删除初始值之后的任何内容(

如果文本位于右侧,请尝试


右边有文字吗

如果不是,只需在自定义分隔符(最左边)上拆分列,然后删除第二列

= Table.SplitColumn(Source, "Column1", Splitter.SplitTextByEachDelimiter({"("}, QuoteStyle.Csv, false), {"Column1.1", "Column1.2"})
或者变换列以删除初始值之后的任何内容(

如果文本位于右侧,请尝试


一个不同的解决方案合在一起会很好一个不同的解决方案合在一起会很好我也偶然发现了那个网站!谢谢我也偶然发现了那个网站!是的,否则你的解决方案将是完美的@horseyride=Table.TransformColumns(Source,{“Column1”,each Text.Start(,Text.PositionOf(,“(”))&Text.End(,Text.Length()-Text.PositionOf(,“)”)-1,键入Text}})是的,否则您的解决方案将是完美的@horseyride=Table.TransformColumns(源,{“Column1”,每个Text.Start(,Text.PositionOf(,“(”)和Text.End(,Text.Length()-Text.PositionOf(,“)”)-1,键入Text})