我有一个表字段,其中数据包含我们的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)
)
)
)
)
由于
答案 0 :(得分:3)
有可能有几种方法可以做到这一点。这是一种方式:
let
Source = { "a" .. "z" } & { "A" .. "Z" }
in
Source
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
Text.Range([ColumnWithData], 0, GetFirstLetterIndex([ColumnWithData]))
该公式将从您的数据文本到第一个字母的所有内容。