找回密码
 立即注册
搜索
查看: 3764|回复: 15

[软件] (情况又变了)EXCEL如何对比两列资料的相似度?

[复制链接]
头像被屏蔽
     
发表于 2014-7-5 02:34 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2014-7-5 03:52 | 显示全部楼层
把所有格子合并了
table1
A1 B1 C1 D1
table2
A2 B2 C2 D2
那么都加一列
E1 = A1&B1&C1&D1
E2 = A2&B2&C2&D2
比较E列就好了
回复

使用道具 举报

头像被屏蔽
     
 楼主| 发表于 2014-7-5 06:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2014-7-5 07:05 | 显示全部楼层
用if(and(exact(),exact(),....)...,...)
这样?
回复

使用道具 举报

头像被屏蔽
     
 楼主| 发表于 2014-7-5 07:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2014-7-5 10:11 | 显示全部楼层
捷径当然有啊,上vba直接用sql,select from,然后输出对比结果和行号
不要太简单

——— 来自Stage1st Reader For iOS
回复

使用道具 举报

     
发表于 2014-7-5 10:14 | 显示全部楼层
横向多列在vba做个循环咯

——— 来自Stage1st Reader For iOS
回复

使用道具 举报

头像被屏蔽
     
 楼主| 发表于 2014-7-5 19:19 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2014-7-5 19:36 | 显示全部楼层
excel 匹配
回复

使用道具 举报

     
发表于 2014-7-5 20:56 | 显示全部楼层
这要上最小编辑距离?
不知道excel有没有现成的函数
回复

使用道具 举报

发表于 2014-7-5 21:01 | 显示全部楼层
比较文本相似度是个非常麻烦的东西,建议用专门的东西弄
回复

使用道具 举报

头像被屏蔽
     
发表于 2014-7-5 21:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
     
 楼主| 发表于 2014-7-5 21:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2014-7-5 22:03 | 显示全部楼层
不懂VBA...照着关键词搜到个现成的 试了下能用比较从文本A编辑到文本B需要的操作次数(增删改) 数字越小说明越相似(准确点是要再除以字符的长度?)
同义词之类就没办法了...
  1. Function Levenshtein(ByVal string1 As String, ByVal string2 As String) As Long

  2. Dim i As Long, j As Long
  3. Dim string1_length As Long
  4. Dim string2_length As Long
  5. Dim distance() As Long

  6. string1_length = Len(string1)
  7. string2_length = Len(string2)
  8. ReDim distance(string1_length, string2_length)

  9. For i = 0 To string1_length
  10.     distance(i, 0) = i
  11. Next

  12. For j = 0 To string2_length
  13.     distance(0, j) = j
  14. Next

  15. For i = 1 To string1_length
  16.     For j = 1 To string2_length
  17.         If Asc(Mid$(string1, i, 1)) = Asc(Mid$(string2, j, 1)) Then
  18.             distance(i, j) = distance(i - 1, j - 1)
  19.         Else
  20.             distance(i, j) = Application.WorksheetFunction.Min _
  21.             (distance(i - 1, j) + 1, _
  22.              distance(i, j - 1) + 1, _
  23.              distance(i - 1, j - 1) + 1)
  24.         End If
  25.     Next
  26. Next

  27. Levenshtein = distance(string1_length, string2_length)

  28. End Function
复制代码
回复

使用道具 举报

     
发表于 2014-7-5 22:08 | 显示全部楼层
excel记录大量数据的第一生死要务就是不要合并单元格,对我来说是死也要守住的铁则
回复

使用道具 举报

头像被屏蔽
     
 楼主| 发表于 2014-7-6 00:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-8-30 13:55 , Processed in 0.114671 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表