如何在MS Excel或UiPath StudioX实现字符串相似度匹配及百分比展示?
实现提案重复/相似匹配的方案(Excel & UiPath StudioX)
一、在MS Excel中实现
1. 完全匹配(100%相似度)
用EXACT函数直接判断字符串是否完全一致,返回TRUE即100%匹配,FALSE则不是:
=EXACT(A2,B2)
要直接显示百分比的话,嵌套IF函数:
=IF(EXACT(A2,B2),"100%","")
2. 相似匹配(计算相似度百分比)
Excel没有原生相似度函数,可通过**编辑距离(Levenshtein距离)**自定义VBA函数实现:
- 按
Alt+F11打开VBA编辑器,插入新模块,粘贴以下代码:
Function SimilarityPercent(str1 As String, str2 As String) As Double Dim len1 As Integer, len2 As Integer, editDist As Integer len1 = Len(Trim(str1)) len2 = Len(Trim(str2)) ' 处理空字符串场景 If len1 = 0 And len2 = 0 Then SimilarityPercent = 1 Exit Function End If If len1 = 0 Or len2 = 0 Then SimilarityPercent = 0 Exit Function End If ' 计算编辑距离并转换为百分比 editDist = Application.WorksheetFunction.LevenshteinDistance(Trim(str1), Trim(str2)) SimilarityPercent = 1 - (editDist / WorksheetFunction.Max(len1, len2)) SimilarityPercent = Round(SimilarityPercent * 100, 0) End Function
- 返回Excel表格,在目标单元格调用函数:
=SimilarityPercent(A2,B2)&"%"
这个函数会自动去除字符串首尾空格,计算出相似度百分比,和你举例的场景匹配结果一致。
另外,也可以用微软官方免费的Fuzzy Lookup插件,支持批量比对两列数据,直接输出相似度得分,适合大量提案的批量筛选。
二、在UiPath StudioX中实现
1. 完全匹配
用表达式直接判断(自动去除首尾空格):
str1.Trim.Equals(str2.Trim)
要输出百分比的话,添加判断逻辑:
Dim similarity As String If str1.Trim.Equals(str2.Trim) Then similarity = "100%" End If
2. 相似匹配
UiPath自带String Similarity活动(在「Text」分类下),步骤如下:
- 选择匹配算法(推荐Levenshtein,和Excel自定义函数逻辑一致)
- 输入待比对的两个字符串
- 活动会输出0-1之间的相似度小数,乘以100即可得到百分比
如果要批量处理数据库中的提案:
- 用
Database活动读取现有提案数据 - 循环遍历新提交的提案,和数据库每条记录做相似度比对
- 筛选出相似度≥设定阈值(比如80%)的记录,整理成结果展示
内容的提问来源于stack exchange,提问作者Naif Alhwsawi
相关产品推荐
相关产品推荐

