You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何比较两个单元格并返回二者字符内容完全一致的最后字符位置?

如何比较两个单元格并返回二者字符内容完全一致的最后字符位置?

嘿,我来帮你搞定这个问题!要找出两个单元格从开头算起,内容完全一致的最后一个字符位置,在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 12:35:28