如何在Power Query Editor中拆分姓名列手机号并过滤指定邮箱
Power Query 操作解决方案
操作1:拆分Full Name列为手机号和姓名列
你之前用数字/非数字拆分失败的原因是原列每行内容要么全为数字(手机号)要么全为非数字(姓名),不存在同一条内容同时包含数字和非数字的场景,拆分规则无法触发拆分动作,改用自定义列判断即可:
- 进入Power Query编辑器,选中目标表,点击「添加列」→「自定义列」
- 新建Join By Phone列,公式输入:
if Text.PositionOfAny([Full Name], {"0".."9"}) >= 0 then [Full Name] else null - 再新建「正常姓名」列,公式输入:
if Text.PositionOfAny([Full Name], {"0".."9"}) < 0 then [Full Name] else null - 按需删除原Full Name列即可
操作2:删除Atlanta_Email_Only列不含Atlanta的邮箱值
你可以直接转换当前列无需新增条件列,操作如下:
- 选中Atlanta_Email_Only列,点击「转换」选项卡→「标准」→「自定义」
- 输入转换公式:
each if Text.Contains(_, "atlanta", Comparer.OrdinalIgnoreCase) then _ else null - 确认后该列所有不含Atlanta关键词(大小写不敏感)的邮箱会自动替换为空值,符合要求。
如果需要直接删除该列值为空的行,选中该列后点击「筛选」按钮,取消勾选「null」即可批量删除对应行。
完整M代码示例(可选)
你可以直接把以下代码替换到高级编辑器中,修改源数据步骤对应你的数据源即可:
let 源 = Excel.CurrentWorkbook(){[Name="你的表名"]}[Content], 增加手机号列 = Table.AddColumn(源, "Join By Phone", each if Text.PositionOfAny([Full Name], {"0".."9"}) >=0 then [Full Name] else null), 增加姓名列 = Table.AddColumn(增加手机号列, "正常姓名", each if Text.PositionOfAny([Full Name], {"0".."9"}) <0 then [Full Name] else null), 删除原姓名列 = Table.RemoveColumns(增加姓名列,{"Full Name"}), 过滤邮箱列 = Table.TransformColumns(删除原姓名列, {{"Atlanta_Email_Only", each if Text.Contains(_, "atlanta", Comparer.OrdinalIgnoreCase) then _ else null}}) in 过滤邮箱列
内容的提问来源于stack exchange,提问作者TanoooooNg
相关产品推荐
相关产品推荐

