PQ 在分隔符后加提取字段用什么函数

Power Query BOBIS ⋅ 于 2018-08-15 22:46:22 ⋅ 最后回复由 飞天篮球 2018-08-15 22:48:56 ⋅ 2690 阅读

G2004F10138-0187
G2004F20138-0187
G2004F30138-0187
如何在-后面不齐前面的第一位的数字。结果。G2004F10138-10187,G2004F10138-20187,G2004F10138-30187

本帖已被设为精华帖!
本帖由 Alex 于 5年前 加精
成为第一个点赞的人吧 :bowtie:
最佳答案
  • Alex MOD 社区清洁工
    2018-08-15 22:48:17

    从举的例子来看,还有很多未知的不确定因素,如长度是否都统一?前缀是否都是 G2004
    如果长度统一,那么可以用 Text.At 获取第 7 个字符,然后用 Text.Insert 插入字符,写作:

    = Text.Insert("G2004F30138-0187",12,Text.At("G2004F30138-0187",6))

    但实际情况可能没这么简单,有可能位数不一样,或者最后一段只有两三个字符。
    前缀先不管,将问题简化为:如何将 30138-87 变成 30138-30187
    在 Excel 中的思路很简单,先用 len 分别截取左右的长度,然后用左边的长度减去右边的长度得到 3,再用 left 获取左边的前 3个字符,插入到右边的最前面。
    在 Power Query 中也是一样的思路,只是换了个函数名:

    let
        a = "30138-87",
        b = Text.Split(a,"-"),
        c = Text.Start(a,Text.Length(b{0})-Text.Length(b{1})),
        d = b{0}&"-"&c&b{1}
    in
        d

    《发票号展开》 中有类似的案例。

回复数量: 2
  • Alex MOD 社区清洁工
    2018-08-15 22:48:17

    从举的例子来看,还有很多未知的不确定因素,如长度是否都统一?前缀是否都是 G2004
    如果长度统一,那么可以用 Text.At 获取第 7 个字符,然后用 Text.Insert 插入字符,写作:

    = Text.Insert("G2004F30138-0187",12,Text.At("G2004F30138-0187",6))

    但实际情况可能没这么简单,有可能位数不一样,或者最后一段只有两三个字符。
    前缀先不管,将问题简化为:如何将 30138-87 变成 30138-30187
    在 Excel 中的思路很简单,先用 len 分别截取左右的长度,然后用左边的长度减去右边的长度得到 3,再用 left 获取左边的前 3个字符,插入到右边的最前面。
    在 Power Query 中也是一样的思路,只是换了个函数名:

    let
        a = "30138-87",
        b = Text.Split(a,"-"),
        c = Text.Start(a,Text.Length(b{0})-Text.Length(b{1})),
        d = b{0}&"-"&c&b{1}
    in
        d

    《发票号展开》 中有类似的案例。

  • 飞天篮球 Talk is cheap, show me your code.
    2018-08-15 22:48:56
    = Table.AddColumn(源,"a",each Text.Replace([str],"-",[ x = List.LastN(Text.SplitAny([str],Text.Combine({"A".."z","-"})),2), 
                                                           y = List.Transform(x,Text.Length),
                                                           z = "-"&Text.Start(x{0},y{0}-y{1})] [z]))

    file

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter