excel 多列去除重复项找出多列中的重复数据

用心创造滤镜
扫码下载App
汇聚2000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(11814)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_084064',
blogTitle:'Excel 两列数据,找出相同项',
blogAbstract:'问题:\r\nExcel 两列数据,要找出相同项目。怎么用函数快速找出??如下(A,B 项全是歌名),也就是求出A,B项目的交集: A: B: 老鼠爱大米 2002年第一场雪 约定 微风往事 爱的承诺 约定 爱的故事 乡间的小路 女人不是月亮 小芳 挪威的森林 微风往事 微风往事 . 2002年第一场雪 . . . . . 返回结果是: 2002年第一场雪 约定 微风往事 - - - - - - - - - - - - - - - - \r\n解决方法:\r\n',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:9,
publishTime:2,
permalink:'blog/static/',
commentCount:5,
mainCommentCount:5,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Excel从多行多列区域中提取不重复值到一列
要将一个多行多列区域中不重复的数据提取到一列,即对于重复的数据只提取一次,最直接的做法是先将该区域的数据转到一列中,再利用Excel中的删除重复项功能去掉重复值。另外,还可使用数据透视表、数组公式和VBA的方法来提取,本文以Excel 2010为例分别介绍如下假如数据在A1:C11区域,其中还包含一些空单元格,如图所示。
方法一:利用数据透视表
利于数据透视表的多重合并计算功能,将上述数据区域作为数据透视表的多重合并计算数据区域,把&值&字段放到在数据透视表的行区域中,即可得到不重复值。步骤如下:
1.在区域左侧插入空白列。如果原数据区域不是从A列开始,则可跳过此步骤。在本例中,由于原数据区域包含工作表的第一列(A列),需先在该区域的左侧插入一个空白列,作为数据透视表的行字段。
2.选择数据区域中的某个单元格,按Alt+D,再按P键,打开&数据透视表和数据透视图向导&,选择&多重合并计算数据区域&项,单击&下一步&。
3.再次单击&下一步&,在弹出的对话框中选择并添加数据区域。在选择区域时注意要包含原数据区域的左侧列及标题列。本例为包含上述空白列的A1:D11。
单击&下一步&,在弹出的对话框中选择数据透视表存放的位置,单击&完成&按钮。本例将数据透视表放置在当前工作表F3单元格开始的区域中。
4.在数据透视表的字段列表中取消选择所有字段,然后再次勾选&值&字段,或将&值&字段拖入到&行&标签区域中,即可在F列得到原区域中的不重复值。
方法二:使用数组公式
假如数据在A1:C11区域,在E2单元格中输入数组公式:
=INDIRECT(TEXT(MIN(IF(($A$2:$C$11&&&&)*(COUNTIF($E$1:E1,$A$2:$C$11)=0),ROW($2:$11)*100+COLUMN($A:$C),7^8)),&R0C00&),)&&&
公式输入完毕,按Ctrl+Shift+Enter结束。然后拖动填充柄向下填充公式,直到出现空白为止。
如果区域中的数据全部为数字和空单元格,还可用下面的数组公式:
=LARGE(IF($A$2:$C$11=&&,&&,$A$2:$C$11),SUM(COUNTIF($A$2:$C$11,$E$1:E1))+1)
方法三:使用VBA
下面的VBA代码利用Dictionary对象中的关键字具有唯一性的特点得到不重复值。使用方法是按Alt+F11打开VBA编辑器,在代码窗口中粘贴下列代码并运行,即可在F列可得到A2:C11区域中的不重复值。
Sub Uniquedata()
Dim rCell As Range
'创建Dictionary对象
Set d = CreateObject(&Scripting.Dictionary&)
'遍历数据区域的单元格
For Each rCell In Range(&A2:C11&)
'判断单元格是否为空
If rCell && && Then
'如果Dictionary对象中不包含指定的关键字就添加该关键字和条目
If Not d.exists(rCell.Value) Then d.Add rCell.Value, rCell.Value
'清除指定列内容
Range(&F2:F& & Range(&F2&).End(xlDown).Row).ClearContents
'将Dictionary对象中的条目写入指定列
Range(&F2&).Resize(d.Count) = WorksheetFunction.Transpose(d.Items)
标签(Tag):
------分隔线----------------------------
------分隔线----------------------------Excel表格中数据比对和查找的几种技巧 - Office办公助手
专业的Office办公软件学习和Office办公软件教程网站!
Excel表格中数据比对和查找的几种技巧
发布时间:09-11 来源:Office办公助手
经常被人问到怎么对两份Excel数据进行比对,提问的往往都很笼统;在工作中,有时候会需要对两份内容相近的数据记录清单进行比对,需求不同,比对的的目标和要求也会有所不同。下面Office办公助手()的小编根据几个常见的应用环境介绍一下Excel表格中数据比对和查找的技巧。
应用案例一:比对取出两表的交集(相同部分)
Sheet1中包含了一份数据清单A,sheet2中包含了一份数据清单B,要取得两份清单共有的数据记录(交集),也就是要找到两份清单中的相同部分。
方法1:高级筛选
高级筛选是处理重复数据的利器。
选中第一份数据清单所在的数据区域,在功能区上依次单击【数据】&&【高级】(2003版本中菜单操作为【数据】&&【筛选】&&【高级筛选】),出现【高级筛选】对话框。
在对话框中,筛选【方式】可以根据需求选取,例如这里选择&将筛选结果复制到其他位置&;【列表区域】就是之前所选中的第一份数据清单A所在的单元格区域;【条件区域】则选取另外那份清单B所在的单元格区域。如下图所示:
点击【确定】按钮后,就可以直接得到两份清单的交集部分,效果如下图。其中两个清单中虽然都有【西瓜】和【菠萝】,但是由于数量不一致,所以没有作为相同记录被提取出来。
这个操作的原理,就是利用了高级筛选功能对于匹配指定条件的记录进行筛选的功能,把两张表中的任意一张作为条件区域,在另外一张表中就能筛选出与之相匹配的记录,忽略掉其他不相关的记录。
需要注意的是,使用高级筛选的时候务必注意两个清单的标题行要保持一致(高级筛选中作为条件区域的前提),并且在选取【列表区域】和【条件区域】的时候都要把标题行的范围包含在其中。
方法2:公式法
使用公式进行比对的方法有很多,如果是单列数据对比比较常用的函数是,如果是多列数据记录对比,比较胜任。
在其中一张清单的旁边输入公式:
=SUMPRODUCT((A2&B2=Sheet2!A$2:A$13&Sheet2!B$2:B$13)*1)
并向下复制填充。其中的Sheet2!A$1:A$13和Sheet2!B$2:B$13是另一张清单中的两列数据区域,需要根据实际情况修改。公式结果等于1的记录就是两个清单的交集部分,如下图所示:
应用案例二:取出两表的差异记录
要在某一张表里取出与另一张表的差异记录,就是未在另外那张清单里面出现的部分,其原理和操作都和上面第一种场景的差不多,所不同的只是筛选后所选取的集合正好互补。
方法1:高级筛选
先将两个清单的标题行更改使之保持一致,然后选中第一份数据清单所在的数据区域,在功能区上依次单击【数据】&&【高级】,出现【高级筛选】对话框。在对话框中,筛选方式选择&在原有区域显示筛选结果&;【列表区域】和【条件区域】的选取和前面场景1完全相同,如下图所示:
点击【确定】完成筛选,将筛选出来的记录全部选中按【Del】键删除(或做标记),然后点击【清除】按钮(2003版本中为【全部显示】按钮)就可以恢复筛选前的状态得到最终的结果,如下图所示:
方法2:公式法
使用公式的话,方法和场景1完全相同,只是最后需要提取的是公式结果等于0的记录。
应用案例三:取出关键字相同但数据有差异的记录
前面的两份清单中,【西瓜】和【菠萝】的货品名称虽然一致,但在两张表上的数量却不相同,在一些数据核对的场景下,就需要把这样的记录提取出来。
方法1:高级筛选
高级筛选当中可以使用特殊的公式,使得高级筛选的功能更加强大。
第一张清单所在的sheet里面,把D1单元格留空,在D2单元格内输入公式:
=VLOOKUP(A2,Sheet2!$A$2:$B$13,2,0)&&B2
然后在功能区上依次单击【数据】&&【高级】,出现【高级筛选】对话框。在对话框中,筛选方式选择&在原有区域显示筛选结果&;【列表区域】选取第一张清单中的完整数据区域,【条件区域】则选取刚刚特别设计过的D1:D2单元格区域,如下图所示:
点击【确定】按钮以后,就可以得到筛选结果,就是第一张中货品名称与第二张表相同但数量却不一致的记录清单,如下图所示:
同样的,照此方法在第二张清单当中操作,也可以在第二张清单中找到其中与第一张清单数据有差异的记录。
这个方法是利用了高级筛选中可以通过自定义公式来添加筛选条件的功能,有关高级筛选中使用公式作为条件区域的用法,可参考本站发布的;另外一篇教程:
Excel中数据库函数和高级筛选条件区域设置方法详解
方法2:公式法
使用公式还是可以利用前面用到的SUMPRODUCT函数,在其中一张清单的旁边输入公式:
=SUMPRODUCT((A2=Sheet2!A$2:A$13)*(B2&&Sheet2!B$2:B$13))
并向下复制填充。公式中的包含了两个条件,第一个条件是A列数据相同,第二个条件是B列数据不相同。公式结果等于1的记录就是两个清单中数据有差异的记录,如下图所示。这个例子中也可以使用更为人熟知的来进行匹配查询,但是VLOOKUP只适合单列数据的匹配,如果目标清单中包含了更多字段数据的差异对比,还是的扩展性更强一些。
上一篇: 下一篇:

我要回帖

更多关于 excel 多列 重复项 的文章

 

随机推荐