- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从多行多列区域中提取不重复值到一列
来源:excel格子社区
?要将一个多行多列区域中不重复的数据提取到一列,即对于重复的数据只提取一次,最直接的做法是先将该区域的数据转到一列中,再利用Excel2007/2010中的删除重复项功能去掉重复值。另外,还可使用数据透视表、数组公式和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??????? End If??? Next??? 清除指定列内容??? Range(F2:F Range(F2).End(xlDown).Row).ClearContents??? 将Dictionary对象中的条目写入指定列??? Range(F2).Resize(d.Count) = WorksheetFunction.Transpose(d.Items)End Sub
文档评论(0)