EXCEL VBA 比较两个单元格 内容 相似程度

举例:模板单元格内容是“abc123defg”,目标单元格内容是"abc45defg",只有中间的3位不同,得到匹配程度为7/10,百分之70。最好不要一位一位去比较,而... 举例:模板单元格 内容是 “abc123defg”, 目标单元格内容是 "abc45defg" ,只有中间的3位不同,得到匹配程度为 7/10, 百分之70。最好不要一位一位去比较,而是 有一个整体的函数。输出是一个小数。求程序。。
我现在是在做一个 比较过滤的 VBE 工具,用来实现两个Excel 表格内容的比较,逐行对比,为此 也作了一个 用户界面,用户可以在用户界面 输入相似比例,比如百分之60,百分之90 这样,如果相似程度 达到90, 就做一个操作(不赘述了),不符合,做另一个操作。
例子是这样的,比如下面 这俩内容,Zielgewicht: 650 kg (derzeitig ~ 720kg) 和
Zielgewicht: 400 kg (derzeitig ~ 720kg)。只有中间的数字 不同。这种的 字符串长度一致, 还容易些, 因为表格内容几千行,有时会出现 比如 Zielgewicht: 650 kg (derzeitig ~ 720kg) 和 Zielgewicht: 40 kg (derzeitig ~ 720kg) 这样的,就比较困惑,如何得出相似程度,跟用户输入的 要求对比,excel 是否存在这样的 函数。请教? 一般情况 只是 数字上的 差异的话, 是不是容易些?
展开
 我来答
向传奇朝圣
2016-11-10 · TA获得超过128个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:88.5万
展开全部
朋友,你这里要求要一个整体的函数,或许你不知道你这样的文本长度不对等的两个文本的对比是有多难。我们没法告诉电脑到底应该按照怎么样的规律进行对比。稍微有一点逻辑上的出入,得出的结果就将大相径庭。希望你们以后提问的时候可以尽量的把问题说清楚,最好的是附带实际表格的图片。
或许你认为这样的对比很简单不过了。但是其实不是你想的那样

下面给一个简单的自定义函数的代码吧。希望你能用。这个是最简单的逻辑。如果你需要的是其他的对比的方法的话,你追问一下,我尝试帮你解决
Function TXB(TXA As String, TXC As String)
Dim L As Integer
L = 0
s = Len(TXA)
For x = 1 To s
If Left(TXA, x) = Left(TXC, x) Then
L = L + 1
End If
Next x
TXB = L / s
End Function
这个是自定义函数宏。根据你的描述,应该是有VBA基础吧。
但是这个宏只适用于两个文本的长度是一样的的时候,长度不一样的话,太难比较。

需要的话,你就直接粘贴代码到VBA模块里。返回表格使用函数 TXB
具体格式是 =TXB(文本一,文本二)
追问
我现在是在做一个 比较过滤的 VBE 工具,用来实现两个Excel 表格内容的比较,逐行对比,为此 也作了一个 用户界面,用户可以在用户界面 输入相似比例,比如百分之60,百分之90 这样,如果相似程度 达到90, 就做一个操作(不赘述了),不符合,做另一个操作。
追答
最后的答案了····如果你的两个文本之间只有一个位置不一样的。那么还是可以解决的,但是如果有两个或者以上的地方不一样,而且长度还不一样的话,那是真的不知道该怎么去实现了,如果有了答案,还麻烦你一起写出来一下,我也想学习一下。

好了,废话不多说了。下面是允许文本长度不一样,但是文本之间只能有一个位置不一样。就是说只适用于你问题里举的例子的

Function TXB(TXA As String, TXC As String)
Dim L As Integer
L = 0
s = Len(TXA) 'TXA为模板文本
For x = 1 To s
If Left(TXA, x) = Left(TXC, x) Then 'TXC是目标文本
L = L + 1
Else
For x1 = 1 To s
If Right(TXA, x1) = Right(TXC, x1) Then
L = L + 1
Else
GoTo 1
End If
Next x1
End If
Next x
1:
TXB = L / s
End Function

一样的是自定义函数,函数的书写格式还是一样的
=TXB(模板文本,目标文本)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式