Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7494|回复: 12

[已解决]急求---如何将同行不同列的英文单词数据去重啊

[复制链接]
发表于 2014-6-3 08:39 | 显示全部楼层 |阅读模式
本帖最后由 kerry218 于 2014-6-3 09:39 编辑

各位老师好,我现在急求怎样能把同行不同列的英文单词数据去重,例如:
maize            pcr              maize
mycotoxins    quality          quality        
  
结果变为:
maize  pcr
mycotoxins  quality
由于数据量太多了,不知道各位老师有好的办法没有,谢谢了
最佳答案
2014-6-3 09:55
本帖最后由 qh8600 于 2014-6-3 09:59 编辑
kerry218 发表于 2014-6-3 09:40
谢谢您,附件已上传,辛苦老师了
  1. Sub demo()
  2.     Dim ar, br, str As String, d As Object, i, j
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     ar = Sheet1.Range("A1").CurrentRegion
  5.     ReDim br(1 To UBound(ar), 1 To UBound(ar, 2))
  6.     For i = 1 To UBound(ar)
  7.       cnt = 0
  8.         For j = 1 To UBound(ar, 2)
  9.             str = ar(i, j)
  10.             If Not d.Exists(str) Then
  11.                 cnt = cnt + 1
  12.                 br(i, cnt) = ar(i, j)
  13.             End If
  14.         Next
  15.     Next
  16.     With Sheet2
  17.         .Rows("1:1048576").Delete Shift:=xlUp
  18.         .Cells(1, 1).Resize(UBound(ar), cnt) = br
  19.     End With
  20. End Sub
复制代码
运行宏,结果在第二个表中
关键词同行不同列去重.rar (862.86 KB, 下载次数: 28)

关键词同行不同列去重.zip

450.64 KB, 下载次数: 22

发表于 2014-6-3 09:09 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-3 09:13 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-6-3 09:35 | 显示全部楼层
qh8600 发表于 2014-6-3 09:09
上传附件

麻烦您了
回复

使用道具 举报

 楼主| 发表于 2014-6-3 09:40 | 显示全部楼层
qh8600 发表于 2014-6-3 09:09
上传附件

谢谢您,附件已上传,辛苦老师了
回复

使用道具 举报

 楼主| 发表于 2014-6-3 09:42 | 显示全部楼层
易安1 发表于 2014-6-3 09:13
建议转置后 直接用自带直接去重

您好,我的数据有1万多条(行),EXCEL转置能放下吗?另外您说的自带直接去重是筛选里面的吗?请教了
回复

使用道具 举报

发表于 2014-6-3 09:55 | 显示全部楼层    本楼为最佳答案   
本帖最后由 qh8600 于 2014-6-3 09:59 编辑
kerry218 发表于 2014-6-3 09:40
谢谢您,附件已上传,辛苦老师了
  1. Sub demo()
  2.     Dim ar, br, str As String, d As Object, i, j
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     ar = Sheet1.Range("A1").CurrentRegion
  5.     ReDim br(1 To UBound(ar), 1 To UBound(ar, 2))
  6.     For i = 1 To UBound(ar)
  7.       cnt = 0
  8.         For j = 1 To UBound(ar, 2)
  9.             str = ar(i, j)
  10.             If Not d.Exists(str) Then
  11.                 cnt = cnt + 1
  12.                 br(i, cnt) = ar(i, j)
  13.             End If
  14.         Next
  15.     Next
  16.     With Sheet2
  17.         .Rows("1:1048576").Delete Shift:=xlUp
  18.         .Cells(1, 1).Resize(UBound(ar), cnt) = br
  19.     End With
  20. End Sub
复制代码
运行宏,结果在第二个表中
关键词同行不同列去重.rar (862.86 KB, 下载次数: 28)
回复

使用道具 举报

 楼主| 发表于 2014-6-3 10:09 | 显示全部楼层
qh8600 发表于 2014-6-3 09:55
运行宏,结果在第二个表中

您好,我看了结果挺好的,能麻烦请教下您是怎么做的吗?以前我都是用很笨的手工办法,您太厉害了,能教教我吗?
回复

使用道具 举报

发表于 2014-6-3 10:12 | 显示全部楼层
本帖最后由 qh8600 于 2014-6-3 10:19 编辑
kerry218 发表于 2014-6-3 10:09
您好,我看了结果挺好的,能麻烦请教下您是怎么做的吗?以前我都是用很笨的手工办法,您太厉害了,能教教 ...

VBA啊,是不是给个最佳啊
你只要运行宏就可以了,学的话,论坛上有好多


回复

使用道具 举报

 楼主| 发表于 2014-6-3 10:30 | 显示全部楼层
qh8600 发表于 2014-6-3 10:12
VBA啊,是不是给个最佳啊
你只要运行宏就可以了,学的话,论坛上有好多

谢谢您了,可能是我原始数据处理的不好,有些单词前有空格,相同的两个没去重干净,麻烦您能教教我吗?一定是最佳的,将我从纯粹的体力劳动一下解放了,能留您个QQ吗?
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-24 05:45 , Processed in 0.304466 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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