如何按大写字母/数字拆分文本列?含Power Query方案咨询
用Power Query轻松拆分设备名称(直到第一个大写字母/数字)
当然可以!Power Query处理这类文本拆分需求比Excel函数灵活太多,完全不用写复杂的数组公式。我来给你一步步演示实现方法:
步骤1:将数据导入Power Query
- 选中你的设备名称列(比如A列),切换到Excel的数据选项卡
- 点击「从表格/区域」,确认数据包含表头(如果没有表头可以勾选「我的表格有标题」),进入Power Query编辑器
步骤2:添加自定义列实现拆分
- 在Power Query编辑器中,切换到添加列选项卡,点击「自定义列」
- 在弹出的「自定义列」对话框中,输入以下M代码(记得把
[设备名称]替换成你实际的列名):
= let originalText = [设备名称], // 定义要查找的字符集合:拉丁大写、西里尔大写、数字 targetChars = {"A".."Z", "А".."Я", "0".."9"}, // 找到第一个目标字符的位置 firstMatchPos = Text.PositionOfAny(originalText, targetChars, Occurrence.First) in // 根据位置截取文本,没找到则返回原内容 if firstMatchPos <> -1 then Text.Start(originalText, firstMatchPos) else originalText
- 点击「确定」,你就能看到拆分后的新列了
步骤3:将结果返回Excel
点击Power Query编辑器主页选项卡的「关闭并上载」,拆分好的数据就会自动导入到新的Excel工作表中。
为什么你的LEFT函数没生效?
你之前的公式只覆盖了拉丁大写字母的ASCII码(65-90),但西里尔大写字母的编码不在这个范围内,而且数字的处理逻辑也有漏洞,导致公式无法精准定位所有目标字符。Power Query的Text.PositionOfAny可以直接指定字符范围,完全不用纠结编码问题,逻辑更清晰也更可靠。
内容的提问来源于stack exchange,提问作者Adren
相关产品推荐
相关产品推荐

