如何比较两个单元格并返回二者字符内容完全一致的最后字符位置?
如何比较两个单元格并返回二者字符内容完全一致的最后字符位置?
嘿,我来帮你搞定这个问题!要找出两个单元格从开头算起,内容完全一致的最后一个字符位置,在Excel里用公式就能轻松实现,我给你两种实用方案:
方法一:兼容新旧版Excel的数组公式
假设你要比较的两个单元格是A1和B1,可以用下面的公式:
=IF(EXACT(A1,B1),LEN(A1),MATCH(FALSE,EXACT(LEFT(A1,ROW(INDIRECT("1:"&MAX(LEN(A1),LEN(B1))))),LEFT(B1,ROW(INDIRECT("1:"&MAX(LEN(A1),LEN(B1)))))),0)-1)
公式说明:
- 先用
EXACT(A1,B1)判断两个单元格内容是否完全一致,如果是,直接返回单元格内容的长度(因为所有字符都匹配) - 如果不完全一致,就通过
ROW(INDIRECT(...))生成从1到两个单元格最大长度的序列,逐字符截取两个单元格的前缀,用EXACT逐一比较是否匹配 MATCH函数找到第一个不匹配的位置,减1就是最后一个完全匹配的字符位置- 注意:旧版Excel需要按
Ctrl+Shift+Enter作为数组公式输入,新版Excel直接回车即可
方法二:用XLOOKUP简化公式(适用于有XLOOKUP函数的Excel版本)
如果你用的是较新版本的Excel(有XLOOKUP函数),可以用更简洁的公式:
=IF(EXACT(A1,B1),LEN(A1),XLOOKUP(FALSE,EXACT(LEFT(A1,SEQUENCE(MAX(LEN(A1),LEN(B1)))),LEFT(B1,SEQUENCE(MAX(LEN(A1),LEN(B1))))),SEQUENCE(MAX(LEN(A1),LEN(B1))),LEN(A1))-1)
公式说明:
- 用
SEQUENCE生成序列替代旧版的ROW(INDIRECT),写法更简洁 XLOOKUP直接定位第一个不匹配的位置,减1得到最后匹配的字符位置;如果完全匹配,同样返回内容长度
额外说明:
- 上面的公式用
EXACT是区分大小写的,如果不需要区分大小写,把公式里的EXACT(...)换成(...)=(...)即可,比如把EXACT(LEFT(A1,n),LEFT(B1,n))改成LEFT(A1,n)=LEFT(B1,n) - 就像你例子里的情况,两个单元格前34个字符完全相同,用这个公式就会返回34,正好符合你的需求
备注:内容来源于stack exchange,提问作者Vignesh K
相关产品推荐
相关产品推荐

