You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query中带前缀姓氏排序异常问题求助

Power Query姓名排序异常解决方案

方法1:提取姓氏关键字排序

如果目标是按姓氏排序(无论是否包含前缀),可按以下操作:

  1. 在Power Query中加载姓名列表,假设对应列名为姓名。
  2. 添加自定义列,提取排序用的关键字:
    • 若想按前缀后的首字母(如de Villers按V排序),使用M语言公式:
      = Text.AfterDelimiter([姓名], " ", {0, RelativePosition.FromEnd})
      
      该公式会提取姓名中最后一个空格后的部分(例如Pete de Villers会提取出Villers)。
    • 若想按含前缀的完整姓氏排序,使用M语言公式:
      = Text.Combine(List.Skip(Text.Split([姓名], " "), 1), " ")
      
      该公式会去掉姓名的第一个部分(名字),剩余内容作为姓氏(例如Pete de Villers会得到de Villers)。
  3. 按自定义的关键字列排序,完成后可隐藏或删除该列。

方法2:统一姓名格式后排序

若原始姓名格式混乱(存在单名、名 姓、姓,名等多种格式),先统一格式再排序:

  1. 添加自定义列,将姓,名格式转换为名 姓:
    = if Text.Contains([姓名], ",") then Text.Trim(Text.Combine(List.Reverse(Text.Split([姓名], ",")), " ")) else [姓名]
    
  2. 待所有姓名统一为名 姓或单名格式后,参考方法1提取姓氏关键字进行排序。

方法3:清理字符串后强制首字母排序

若仅需解决de Villers排在末尾的问题,可先清理字符串再排序:

  1. 添加自定义列清理姓名中的不可见字符与首尾空格:
    = Text.Clean(Text.Trim([姓名]))
    
  2. 选中清理后的列,点击排序按钮选择升序/降序,完成后可替换原姓名列。

内容的提问来源于stack exchange,提问作者OuluChris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:15:47