电源查询 - 从数字值

时间:2015-05-08 14:33:52

标签: numbers character formula powerquery

我有一个表字段,其中数据包含我们的memberID号,后跟字符或字符+数字字符串 例如:

My Data
1234567Z1
2345T10
222222T10Z1
111
111A

Should Become
123456
12345
222222
111
111

我想获得会员编号(如上面的应该显示)。 I.E.所有第一个字符左边的数字。 由于会员号码的长度可能因人而异(前1到7位),所用的字母可能不同(a到z,0到8个字符长),我不认为我可以分裂该领域。

现在,在Power Query中,我执行了27次搜索和替换命令来清理这些数据(例如找到T10替换为什么,找不到T20替换等等)

有人能建议更好的方法来实现这个目标吗?

我在Excel中成功创建了一个公式...但我现在正在尝试在Power Query中执行此操作,我不知道如何转换公式 - 我也不确定这是最有效的溶液

=iferror(value(left([MEMBERID],7)),
     iferror(value(left([MEMBERID],6)),
         iferror(value(left([MEMBERID],5)),
             iferror(value(left([MEMBERID],4)),
                 iferror(value(left([MEMBERID],3)),0)
             )
         )
     )
 )

由于

1 个答案:

答案 0 :(得分:3)

有可能有几种方法可以做到这一点。这是一种方式:

  1. 创建查询信件:
  2. let Source = { "a" .. "z" } & { "A" .. "Z" } in Source

    1. 创建查询GetFirstLetterIndex:
    2. let Source = (text) => let // For each letter find out where it shows up in the text. If it doesn't show up, we will have a -1 in the list. Make that positive so that we return the index of the first letter which shows up. firstLetterIndex = List.Transform(Letters, each let pos = Text.PositionOf(text, _), correctedPos = if pos < 0 then Text.Length(text) else pos in correctedPos), minimumIndex = List.Min(firstLetterIndex) in minimumIndex in Source

      1. 在包含您的数据的表格中,添加一个包含以下公式的自定义列:
      2. Text.Range([ColumnWithData], 0, GetFirstLetterIndex([ColumnWithData]))

        该公式将从您的数据文本到第一个字母的所有内容。