如何在Excel中获取单元格内子字符串的倒序位置(从0开始)
Excel 获取倒序分隔子串的索引(从0开始)
假设存储分号分隔参数的单元格为A1(示例值:a;c;d;b),要查找的目标子串在B1,可通过以下公式实现需求:
适用于Excel 365/2021(动态数组版本)
=XMATCH(B1, SORTBY(TEXTSPLIT(A1,";"), SEQUENCE(COUNTA(TEXTSPLIT(A1,";")),,COUNTA(TEXTSPLIT(A1,";")),-1)))-1
公式逻辑拆解:
TEXTSPLIT(A1,";"):将A1内容按分号拆分为动态数组,示例结果为{"a","c","d","b"}SEQUENCE(COUNTA(...),,COUNTA(...),-1):生成从元素总数开始倒序的序列,示例中元素总数为4,序列为{4,3,2,1}SORTBY(...):用倒序序列对拆分后的数组排序,实现数组反转,示例结果为{"b","d","c","a"}XMATCH(B1, ...):查找目标子串在反转数组中的位置(从1开始计数),最后减1得到从0开始的索引
适用于旧版Excel(无动态数组)
若你的Excel版本不支持动态数组函数,可使用以下数组公式(输入后按Ctrl+Shift+Enter确认):
=IFERROR(MATCH(B1, MID(SUBSTITUTE(A1,";",REPT(" ",LEN(A1))), LEN(A1)*(COUNTA(FILTERXML("<t><s>"&SUBSTITUTE(A1,";","</s><s>")&"</s></t>"))-ROW(INDIRECT("1:"&COUNTA(FILTERXML("<t><s>"&SUBSTITUTE(A1,";","</s><s>")&"</s></t>"))))+1, LEN(A1)), 0)-1, -1)
说明:
- 借助
FILTERXML拆分字符串获取元素总数,通过MID和REPT生成倒序的拆分元素列表,再用MATCH查找位置后减1得到索引 - 若目标子串不存在,公式返回
-1,可根据需求调整返回值
测试验证:
- 输入
a返回3 - 输入
c返回2 - 输入
d返回1 - 输入
b返回0
内容的提问来源于stack exchange,提问作者s_b
相关产品推荐
相关产品推荐

