根据数字和 = 符号拆分字符串

根据数字和 = 符号拆分字符串

我有这个字符串

6993=!ELP|6920=MP|6921=1|6922=MXGB0TC|6970=5|6926=F|6974=P

寻找获得的最佳方法MXGB0TC,即6922=在第一个管道被分割后,在它的左边6922=

尝试了下面的方法来完成第一部分,但我猜B0TC|6970=5|6926=F|6974=P

=RIGHT(A2; SEARCH(6922&"=";A2;1)-1)

我在这里遗漏了什么?

答案1

您快完成了。假设您的搜索字符串的一般格式保持不变,请尝试以下操作:

=LEFT(RIGHT(A2,LEN(A2)-SEARCH("6922=",A2)-4),SEARCH("|",RIGHT(A2,LEN(A2)-SEARCH("6922=",A2)-4))-1)

编辑:根据您的评论,如果您想要的值始终是 7 个字符,则可以缩短如下:

=LEFT(RIGHT(A2,LEN(A2)-SEARCH("6922=",A2)-4),7)

答案2

你可能会发现这很有用。

选择您的范围,然后使用数据>获取和转换数据>从表/范围

这将打开 Power Query 编辑器。然后,您可以使用管道上的拆分列并分离到行来生成以下内容:

在此处输入图片描述

然后您可以使用 delimiter="=" 上的拆分列来获得以下内容:

在此处输入图片描述

您可以在此处进行过滤,或者只需使用“主页”>“关闭并加载”将所有数据放回工作簿中。

这是我的疑问:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"data", type text}}),
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Changed Type", {{"data", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "data"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"data", type text}}),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type1", "data", Splitter.SplitTextByDelimiter("=", QuoteStyle.Csv), {"data.1", "data.2"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"data.1", Int64.Type}, {"data.2", type text}})
in
    #"Changed Type2"

相关内容