如何在Power Query中用IF语句创建符合指定格式的计算列
在Power Query中创建符合规则的全名计算列
需求示例
| Full Name | Expected Answer |
|---|---|
| name1 lo lastname1 | name1. lolastname1 |
| name2 di lastname2 | name2. dilastname2 |
| name3 secondname lastname3 | name3.lastname3 |
| name4 lastname4 | name4.lastname4 |
规则总结
- 若全名拆分后存在2个字符的中间部分,则格式为:
[名]. [2字符中间名][姓] - 若中间部分长度≠2,或全名只有名+姓两部分,则格式为:
[名].[姓]
Power Query实现代码
在Power Query中添加自定义列,使用以下M语言公式:
= let SplitName = Text.Split([Full Name], " "), FirstName = SplitName{0}, LastName = List.Last(SplitName) in if List.Count(SplitName) > 2 and Text.Length(SplitName{1}) = 2 then FirstName & ". " & SplitName{1} & LastName else FirstName & "." & LastName
代码说明
Text.Split([Full Name], " "):将全名按空格拆分为文本列表SplitName{0}:提取列表第一个元素(名)List.Last(SplitName):提取列表最后一个元素(姓)- 条件判断:
- 当拆分后的元素数量大于2,且第二个元素长度为2时,按带短中间名的格式拼接
- 其他情况直接拼接名和姓
内容的提问来源于stack exchange,提问作者symkly
相关产品推荐
相关产品推荐

