如何从Excel分号分隔字符串中提取所有CN=项并输出到单个单元格
Excel提取单元格内所有CN=前缀内容的解决方案
版本1:Excel 365/2021及以上(支持动态数组公式)
直接在目标单元格输入以下公式,然后开启目标单元格的自动换行功能即可得到逐行排列的结果:
=TEXTJOIN(CHAR(10),TRUE,LEFT(MID(TEXTSPLIT(A87,";"),SEARCH("CN=",TEXTSPLIT(A87,";"))+2,999),SEARCH(",",MID(TEXTSPLIT(A87,";"),SEARCH("CN=",TEXTSPLIT(A87,";"))+2,999))-1))
公式说明:
- 先用
TEXTSPLIT(A87,";")按分号拆分原字符串为多个独立属性片段 - 对每个片段用
SEARCH("CN=")定位CN=的位置,截取后续内容 - 再用
SEARCH(",")定位后续第一个逗号的位置,截取CN值部分 - 最后用
TEXTJOIN加换行符CHAR(10)把所有结果拼接在同一个单元格内
版本2:低版本Excel(不支持动态数组)
使用Power Query实现,操作步骤如下:
- 选中原数据所在单元格/列,点击顶部「数据」选项卡→「从表格/区域」导入Power Query编辑器
- 右键点击数据列标题,选择「拆分列」→「按分隔符」,分隔符输入
;,拆分方式选「拆分为行」 - 点击顶部「添加列」→「自定义列」,输入自定义公式(将公式中的
[原列名]替换为你实际的列标题):Text.Range([原列名],Text.PositionOf([原列名],"CN=")+2,Text.PositionOf(Text.Range([原列名],Text.PositionOf([原列名],"CN=")+2),",")) - 选中新增的自定义列,点击「转换」选项卡→「分组依据」,分组依据选无,操作选「将行串联为列表」,分隔符输入换行符,确认后得到拼接好的结果
- 点击「关闭并上载」将结果导出回Excel,设置单元格自动换行即可
原公式失效原因
你之前使用的SUBSTITUTE系列公式仅能做固定字符替换,无法实现「过滤非CN开头片段、截取CN=到第一个逗号区间内容」的逻辑,因此无法达到预期效果。
内容的提问来源于stack exchange,提问作者NeoTheNerd
相关产品推荐
相关产品推荐

