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 是否存在这样的 函数。请教? 一般情况 只是 数字上的 差异的话, 是不是容易些? 展开
我现在是在做一个 比较过滤的 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 是否存在这样的 函数。请教? 一般情况 只是 数字上的 差异的话, 是不是容易些? 展开
1个回答
展开全部
朋友,你这里要求要一个整体的函数,或许你不知道你这样的文本长度不对等的两个文本的对比是有多难。我们没法告诉电脑到底应该按照怎么样的规律进行对比。稍微有一点逻辑上的出入,得出的结果就将大相径庭。希望你们以后提问的时候可以尽量的把问题说清楚,最好的是附带实际表格的图片。
或许你认为这样的对比很简单不过了。但是其实不是你想的那样
下面给一个简单的自定义函数的代码吧。希望你能用。这个是最简单的逻辑。如果你需要的是其他的对比的方法的话,你追问一下,我尝试帮你解决
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(文本一,文本二)
或许你认为这样的对比很简单不过了。但是其实不是你想的那样
下面给一个简单的自定义函数的代码吧。希望你能用。这个是最简单的逻辑。如果你需要的是其他的对比的方法的话,你追问一下,我尝试帮你解决
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(模板文本,目标文本)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询