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

基于Levenshtein距离匹配比对字符串的Excel实现问题

无宏Excel实现Levenshtein距离匹配与百分位展示

核心结论

可以在无宏的Excel(365/2021及以上版本)中实现需求,且支持200+字符的字符串处理,以下是分步实现方案:


1. 定义无宏Levenshtein距离函数

用Excel内置的LAMBDA函数创建自定义距离计算工具,无需VBA宏:

  1. 打开「公式」选项卡 → 「名称管理器」→ 「新建」
  2. 名称设为LevDist,引用位置粘贴以下公式:
=LAMBDA(a,b,
    LET(
        lenA,LEN(a), lenB,LEN(b),
        matrix,MAKEARRAY(lenA+1,lenB+1,LAMBDA(r,c,IF(r=1,c-1,IF(c=1,r-1,"")))),
        calcMatrix,REDUCE(matrix,SEQUENCE(lenA),LAMBDA(mat,i,
            REDUCE(mat,SEQUENCE(lenB),LAMBDA(m,j,
                LET(
                    cost,IF(MID(a,i,1)=MID(b,j,1),0,1),
                    val,MIN(INDEX(m,i,j+1)+1,INDEX(m,i+1,j)+1,INDEX(m,i,j)+cost),
                    INDEX(m,i+1,j+1,val)
                )
            ))
        ),
        INDEX(calcMatrix,lenA+1,lenB+1)
    )
)
  1. 确定后,即可用=LevDist(字符串1, 字符串2)直接计算编辑距离。

2. 匹配最相似的模板字符串

假设:

  • 模板字符串存于模板表!A2:A100(A1为表头)
  • 当前填充字符串在填充表!A2

在填充表!B2输入公式,获取最匹配的模板:

=INDEX(模板表!A:A,XMATCH(MIN(BYROW(模板表!A2:A100,LAMBDA(x,LevDist(A2,x)))),BYROW(模板表!A2:A100,LAMBDA(x,LevDist(A2,x))),0))

下拉填充即可批量处理所有填充字符串。

3. 计算距离的百分位数

  1. 先在填充表!C2计算当前填充字符串与匹配模板的距离:
=LevDist(A2,B2)
  1. 在填充表!D2计算该距离的百分位数(返回0-1的数值,乘100可转为百分比):
=PERCENTRANK.INC($C:$C,C2,2)
  • 第三个参数2表示保留2位小数,可按需调整。

关于200+字符的支持

Excel 365/2021的LAMBDA及相关函数对200+字符的字符串处理完全兼容,仅会随字符串长度增加有轻微计算延迟,日常200字符量级无明显影响。


内容的提问来源于stack exchange,提问作者Max Singer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 13:20:49