从开头删除字符,然后删除字符和文本的第一个实例 电源查询



我正在尝试删除我们在发票中使用的垃圾数据,只是为了使它们唯一,在原始发票中添加前缀或后缀。很少有例子是:

  1. 000123456DP
  2. 小米235252
  3. ABC82856893DP0
  4. 00085838539DP13

我试图实现以下结果在 Power 查询中,但它删除了所有字符或所有数字:->这应该是上述示例的答案。

  1. 123456
  2. 235252
  3. 82856893
  4. 85838539

注意:中间的数字不会有任何字符(A - Z(,它唯一的位置是开始(可以有1,2或3个字符(或在末尾,如AB或AB13,应该删除。

任何帮助将不胜感激。

假设数据位于表1的第1列中,这似乎有效。

1 创建非数字和数字字符列表

2 定位第一个数字字符的位置,并删除之前的所有内容以及任何前导零

3 定位第一个非数字字符的位置并删除该字符及其后的所有内容

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
CharsToRemove = List.Transform({32,46,33..45,47,58..126}, each Character.FromNumber(_)),
CharsToKeep = List.Transform({48..57}, each Character.FromNumber(_)),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.PositionOfAny([Column1],CharsToKeep ,0)),
#"Added Custom2" = Table.AddColumn(#"Added Custom", "Custom2", each Text.TrimStart(Text.Middle([Column1],[Custom]),"0")),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "Custom3", each Text.PositionOfAny([Custom2],CharsToRemove )),
#"Added Custom4" = Table.AddColumn(#"Added Custom3", "Custom4", each if [Custom3]<0 then [Custom2] else Text.Start([Custom2],[Custom3]))
in #"Added Custom4"

最新更新