table1
A1 B1 C1 D1
table2
A2 B2 C2 D2
那么都加一列
E1 = A1&B1&C1&D1
E2 = A2&B2&C2&D2
比较E列就好了 用if(and(exact(),exact(),....)...,...)
这样? 捷径当然有啊,上vba直接用sql,select from,然后输出对比结果和行号
不要太简单
——— 来自Stage1st Reader For iOS 横向多列在vba做个循环咯
——— 来自Stage1st Reader For iOS excel 匹配 这要上最小编辑距离?
不知道excel有没有现成的函数 比较文本相似度是个非常麻烦的东西,建议用专门的东西弄 本帖最后由 cxn 于 2014-7-5 21:26 编辑
wowow 发表于 2014-7-5 19:19
情况又变了。
如何对比两列文件的相似度?
主要是需要能够快速的对比出两列高度相似与高度错误。这种复杂公 ...
从原文中抽离数字部分,然后比较……没有现成的工作表函数,得自己写VBA代码,然后调用自己写的函数
闲的蛋疼,写了2个你看一下是否能用
Function abcd(rng As Range)
'从文本中抽离数字部分
abcd = "木有数字"
Dim i%, s$, ss$
s = rng.Text
ss = ""
For i = 1 To Len(s)
If Mid(s, i, 1) Like "#" Then
ss = ss & Mid(s, i, 1)
abcd = ss
End If
Next
End Function
Function efg(rng1 As Range, rng2 As Range)
'比较两段文本是否类似,即其中一段包含另外一段的内容
efg = False
If rng1.Text Like "*" & rng2.Text & "*" Or rng2.Text Like "*" & rng1.Text & "*" Then
efg = True
End If
End Function
不懂VBA...照着关键词搜到个现成的 试了下能用比较从文本A编辑到文本B需要的操作次数(增删改) 数字越小说明越相似(准确点是要再除以字符的长度?)
同义词之类就没办法了...Function Levenshtein(ByVal string1 As String, ByVal string2 As String) As Long
Dim i As Long, j As Long
Dim string1_length As Long
Dim string2_length As Long
Dim distance() As Long
string1_length = Len(string1)
string2_length = Len(string2)
ReDim distance(string1_length, string2_length)
For i = 0 To string1_length
distance(i, 0) = i
Next
For j = 0 To string2_length
distance(0, j) = j
Next
For i = 1 To string1_length
For j = 1 To string2_length
If Asc(Mid$(string1, i, 1)) = Asc(Mid$(string2, j, 1)) Then
distance(i, j) = distance(i - 1, j - 1)
Else
distance(i, j) = Application.WorksheetFunction.Min _
(distance(i - 1, j) + 1, _
distance(i, j - 1) + 1, _
distance(i - 1, j - 1) + 1)
End If
Next
Next
Levenshtein = distance(string1_length, string2_length)
End Function
excel记录大量数据的第一生死要务就是不要合并单元格,对我来说是死也要守住的铁则
页:
[1]