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

如何在Excel中按顺序对比两字符串并统计匹配字符数?

Excel中统计两个字符串对应位置匹配字符的数量方法

方法1:SUMPRODUCT数组公式

直接在C1单元格输入以下公式就能得到匹配数量:
=SUMPRODUCT(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=MID(B1,ROW(INDIRECT("1:"&LEN(A1))),1)))

公式逻辑:

  • LEN(A1)先获取考生答案的长度,自动对齐两个字符串的对比范围(如果两个字符串长度不一样,只会对比到较短的那个的长度)
  • MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)会把A1里的每个字符拆成一个数组,比如A1是DCBCCBD,就拆成{"D","C","B","C","C","B","D"}
  • 用同样的方式拆分B1的字符,然后逐个对比对应位置的字符是否相等,得到一组TRUE/FALSE的结果
  • --把布尔值转成1和0,SUMPRODUCT把这些1加起来,就是匹配的总数

如果要避免长度不一致时的错误计算,可以加个判断:
=IF(LEN(A1)<>LEN(B1),"答案长度不匹配",SUMPRODUCT(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=MID(B1,ROW(INDIRECT("1:"&LEN(A1))),1))))

方法2:TEXTJOIN+LEN组合(Excel 2019及以后可用)

利用TEXTJOIN只保留匹配字符,再统计长度:
=LEN(TEXTJOIN("",TRUE,IF(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)=MID(B1,ROW(INDIRECT("1:"&LEN(A1))),1),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),"")))
注:旧版Excel需要按Ctrl+Shift+Enter确认公式,新版直接回车就行。

方法3:自定义VBA函数

如果需要更灵活的处理,比如后续要扩展规则,可以自己写个函数:

  1. 按Alt+F11打开VBA编辑器
  2. 右键点击当前工作簿,选「插入」→「模块」
  3. 粘贴下面的代码:
Function CountMatchingChars(str1 As String, str2 As String) As Integer
    Dim i As Integer, matchCount As Integer
    matchCount = 0
    ' 取两个字符串里较短的长度来对比
    Dim maxLen As Integer
    maxLen = IIf(Len(str1) < Len(str2), Len(str1), Len(str2))
    
    For i = 1 To maxLen
        If Mid(str1, i, 1) = Mid(str2, i, 1) Then
            matchCount = matchCount + 1
        End If
    Next i
    CountMatchingChars = matchCount
End Function
  1. 返回Excel,在C1输入=CountMatchingChars(A1,B1)就能得到结果

内容的提问来源于stack exchange,提问作者Marcio Jr.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:20:33