Excel中结合LEN与FIND函数提取指定字母后的ID内容
提取指定字母开头的完整ID解决方案
一、Excel 365/2021 版本(支持动态数组函数)
提取所有目标字母开头的ID(如提取所有A开头项)
使用以下公式,自动拆分单元格内容并筛选出目标项:
=TEXTJOIN(", ", TRUE, IF(LEFT(TEXTSPLIT(E2, ", "))="A", TEXTSPLIT(E2, ", "), ""))
替换公式中的"A"为其他字母(如"D")即可提取对应ID。
提取单个目标字母开头的ID(单元格仅含一个目标项)
用更简洁的定位公式:
=XLOOKUP("A*", TEXTSPLIT(E2, ", "), TEXTSPLIT(E2, ", "), "")
二、旧版Excel(无动态数组函数)
单元格仅含一个目标字母开头的ID
使用数组公式(输入后按 Ctrl+Shift+Enter 确认,不能直接回车):
=MID(E2,FIND("A",E2),MATCH(TRUE,ISERROR(VALUE(MID(E2,FIND("A",E2)+ROW(INDIRECT("1:"&LEN(E2)-FIND("A",E2)+1)),1))),0)-1)
原理:找到目标字母的位置后,动态判断后续字符是否为数字,直到遇到非数字字符为止,确定提取长度。
单元格含多个目标字母开头的ID
同样使用数组公式(按 Ctrl+Shift+Enter 确认):
=TEXTJOIN(", ", TRUE, IF(LEFT(TRIM(MID(SUBSTITUTE(E2,", ",REPT(" ",LEN(E2))),ROW(INDIRECT("1:"&LEN(E2)-LEN(SUBSTITUTE(E2,", ",""))+1))*LEN(E2)-LEN(E2)+1,LEN(E2))))="A", TRIM(MID(SUBSTITUTE(E2,", ",REPT(" ",LEN(E2))),ROW(INDIRECT("1:"&LEN(E2)-LEN(SUBSTITUTE(E2,", ",""))+1))*LEN(E2)-LEN(E2)+1,LEN(E2))), ""))
三、原公式问题说明
你之前的公式固定减去3是错误的——不同ID后续的字符长度不固定(比如A7后是, D4,A14后是, J14),无法用固定数值计算提取长度,必须通过动态判断数字结束位置来解决。
内容的提问来源于stack exchange,提问作者user27592310
相关产品推荐
相关产品推荐

