Excel中如何根据点分隔的多层级值批量匹配对应父级值
Excel 多层级编码匹配父级值实现方法
问题说明
现有COLUMN-1列存储以.分隔的多层父子层级编码,需要在COLUMN-2列自动标注每个编码对应的直接父级值,示例数据结构如下:
COLUMN-1 COLUMN-2 A 根节点 A.01 A A.01.01 A.01 A.01.01.01 A.01.01 A.01.01.01.01 A.01.01.01 A.01.01.01.02 A.01.01.01 A.01.01.01.03 A.01.01.01 A.01.01.01.04 A.01.01.01 A.01.01.02 A.01.01 A.01.01.02.01 A.01.01.02 A.01.01.02.02 A.01.01.02 A.01.01.02.03 A.01.01.02 A.01.01.02.04 A.01.01.02 A.01.01.03 A.01.01 A.01.01.03.01 A.01.01.03 A.01.01.03.02 A.01.01.03 A.01.01.03.03 A.01.01.03 A.01.01.03.04 A.01.01.03
最终实现效果参考:
实现方法
无需复杂操作,直接用公式下拉填充即可完成,根据你的Excel版本选择对应公式:
- 全版本兼容公式(适用于所有Excel版本)
假设COLUMN-1的数据从A2单元格开始,点击B2单元格输入以下公式,鼠标放在单元格右下角下拉填充整列:
公式逻辑:先统计当前编码内=IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,".","@",LEN(A2)-LEN(SUBSTITUTE(A2,".",""))))),"根节点").的总数量,定位到最后一个.的位置,截取该位置前的内容即为直接父级编码;如果编码内没有.(最顶层节点),则返回「根节点」标识,可根据需要自行修改顶层返回值。 - Excel 365/2021及以上版本简化公式
高版本Excel支持TEXTBEFORE函数,公式更简洁:=IFERROR(TEXTBEFORE(A2,".",-1),"根节点")
注意:如果原始编码存在前导/后置多余空格,先使用
=TRIM(A2)清理空格后再匹配父级,避免出现匹配错误。
内容的提问来源于stack exchange,提问作者Dario84
相关产品推荐
相关产品推荐

