Excel - Power Query TrimStart With 条件
Excel - Power Query TrimStart With condition
我想要 trim 2 个字符。如果以“20”开头
https://i.stack.imgur.com/MlmmE.png
您可以测试文本是否以“20”开头,如果是,则return“20”之后的文本:
if Text.StartsWith(Example, "20") then Text.AfterDelimiter(Example,"20") else Example
编辑后的答案:
类似的方法,但此步骤会转换 table 列中的值。更改 Source
和 MyValue
引用以适应。
= Table.TransformColumns(Source, {{"MyValue", each Number.From(let x = Number.ToText(_) in if Text.Start(x,2) = "20" then Text.AfterDelimiter(x,"20") else x), type number}})
我从一个看起来像这样的基本文本文件开始...
Example
20456 208899 123 366420
20324 535435 654 533454
852 929492 583 283832
...为了透明起见并向您展示我是如何度过难关的,下面概述了所有步骤。我怀疑这可以以更有效的方式完成,但它完成了工作。
步骤 1
第 2 步
步骤 3
= Table.AddColumn(
#"Promoted Headers",
"Result",
each if Text.StartsWith([Example], "20") then Text.Middle([Example], 2) else [Example])
第 4 步
第 5 步(结果)
- 将您的字符串按
space
拆分成一个列表。
- 通过检查每个元素是否以
20
开头来转换列表
例如:作为添加的列:
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom",
each
Text.Combine(
List.Transform(
Text.Split([Column1]," "),
each
if Text.StartsWith(_,"20")
then Text.Middle(_,2)
else _)," ")
)
原件和结果
注:
如果不想添加列,可以用相同的算法转换已有的列,但需要使用高级编辑器输入代码:
trim20 = Table.TransformColumns(#"Previous Step", {"Column1", (c)=>
Text.Combine(
List.Transform(Text.Split(c," "),
each if Text.StartsWith(_,"20") then Text.Middle(_,2) else _)," ")})
如果直接在 sheet 上进行操作,非常简单。
=IF(LEFT(A1,2) = "20", MID(A1, 3, 1000), A1)
我想要 trim 2 个字符。如果以“20”开头
https://i.stack.imgur.com/MlmmE.png
您可以测试文本是否以“20”开头,如果是,则return“20”之后的文本:
if Text.StartsWith(Example, "20") then Text.AfterDelimiter(Example,"20") else Example
编辑后的答案:
类似的方法,但此步骤会转换 table 列中的值。更改 Source
和 MyValue
引用以适应。
= Table.TransformColumns(Source, {{"MyValue", each Number.From(let x = Number.ToText(_) in if Text.Start(x,2) = "20" then Text.AfterDelimiter(x,"20") else x), type number}})
我从一个看起来像这样的基本文本文件开始...
Example
20456 208899 123 366420
20324 535435 654 533454
852 929492 583 283832
...为了透明起见并向您展示我是如何度过难关的,下面概述了所有步骤。我怀疑这可以以更有效的方式完成,但它完成了工作。
步骤 1
第 2 步
步骤 3
= Table.AddColumn(
#"Promoted Headers",
"Result",
each if Text.StartsWith([Example], "20") then Text.Middle([Example], 2) else [Example])
第 4 步
第 5 步(结果)
- 将您的字符串按
space
拆分成一个列表。 - 通过检查每个元素是否以
20
开头来转换列表
例如:作为添加的列:
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom",
each
Text.Combine(
List.Transform(
Text.Split([Column1]," "),
each
if Text.StartsWith(_,"20")
then Text.Middle(_,2)
else _)," ")
)
原件和结果
注:
如果不想添加列,可以用相同的算法转换已有的列,但需要使用高级编辑器输入代码:
trim20 = Table.TransformColumns(#"Previous Step", {"Column1", (c)=>
Text.Combine(
List.Transform(Text.Split(c," "),
each if Text.StartsWith(_,"20") then Text.Middle(_,2) else _)," ")})
如果直接在 sheet 上进行操作,非常简单。
=IF(LEFT(A1,2) = "20", MID(A1, 3, 1000), A1)