今天回答一个同学的问题:
同学提供了一下表格,B 列单元格中,每个单元格有多名人员,中间用逗号隔开。
要求也很简单,删除最后一名人员,保留前面所有人员姓名。
也就是:提取【最后一个逗号之前的所有内容】
📌 方案一:旧版Excel(无TEXTBEFORE,通用万能)
公式:=LEFT(C3,FIND("|",SUBSTITUTE(C3,",","|",LEN(C3)-LEN(SUBSTITUTE(C3,",",""))))-1)
分步拆解原理
这个公式是旧版Excel截取最后分隔符内容的经典嵌套,拆解4步看懂:
- 统计逗号总数
LEN(C3)-LEN(SUBSTITUTE(C3,",",""))- 原理:单元格总字符数 - 删除所有逗号后的字符数 = 逗号的总个数
- 替换最后一个逗号为特殊符号
SUBSTITUTE(C3,",","|",逗号总数)- 把单元格中最后一个中文逗号替换成专属标记符「|」(表格中不会出现的符号)
- 定位标记符位置
FIND("|",处理后的文本)- 找到刚才替换的「|」所在的字符位置
- 向左截取内容
LEFT(单元格, 位置-1)- 从文本左侧开始,截取到标记符前一位,就是最后一个逗号前的所有内容
方案二:新版Excel(最简单,强烈推荐)
公式:=TEXTBEFORE(C3,",",-1)
公式解析(通俗易懂)
- C3:需要处理的目标单元格
- ",":指定分隔符(重点:是中文逗号,不要写成英文,)
- -1:代表从右侧倒数第一个分隔符截取
总结速记
- 有Office365/2021 以上(有 textbefore 函数):直接用方法二,极简高效
- 旧版Excel(无 textbefore 函数):用嵌套通用公式,全版本兼容