分享

设置数据有效性时,来源是包含有重复值的数组,能在来源框直接写函数解决这个重复的问题吗?

 王断天崖路 2018-01-16

去重复保留唯一的方法有很多,常用的如下:

方法一,数据选项的删除重复项,适合MS EXCEL 2007及其以上版本。这个方法的好处是不需要写公式,高效简单。如图

首先复制A列数据,然后点数据选项的删除重复项,弹出如图对话框,点确定即可,如图。

方法二,数据透视表,这个方法适合所有主流版本。熟练掌握以后,处理分类汇总非常方便,当然这里用数据透视表去重复保留唯一有点大材小用的感觉。MS EXCEL 2007以上版本选择插入菜单,插入数据透视表,如图

注意选择的区域是包含题头的,点确定后,弹出如下菜单,勾选姓名,如图:

点总计单元格,鼠标右键弹出菜单,选择删除总计,如图

方法三,高级筛选,MS 2007及其以上版本操作步骤为:复制A列数据,点数据,筛选,高级,勾选选择不重复记录,如图

以上三种方法是我们推荐的方法,简单实用,不需要烧脑去写公式。下面我们介绍常用的四种公式写法,分为数组公式和普通公式。数组公式是经典的INDEX+SMALL+IF的应用,普通公式用到了LOOKUP+FREQUENCY。

公式法一,由COUNTIF构建行标或列标。写法1如图:

C3输入公式

=IFERROR(INDEX($A$2:$A$9,SMALL(IF(COUNTIF(INDIRECT('A2:A'&ROW($2:$9)),$A$2:$A$9)=1,ROW($1:$8),4^10),ROW(A1))),'')

按ctrl+shift+enter,下拉填充

写法2,如图:

D3输入公式

=IFERROR(INDEX($A$2:$A$9,SMALL(IF(COUNTIF(OFFSET($A$2,,,ROW($1:$8),),$A$2:$A$9)=1,ROW($1:$8),4^10),ROW(A1))),'')

按ctrl+shift+enter,下拉填充

公式法二,由MATCH构建行标或列标,如图

E3输入公式

=IFERROR(INDEX($A$2:$A$9,SMALL(IF(MATCH($A$2:$A$9,$A$2:$A$9,)=ROW($1:$8),ROW($1:$8),4^10),ROW(A1))),'')

按ctrl+shift+enter,下拉填充

公式法三,普通公式,LOOKUP+FREQUENCY的应用,如图

F3输入公式

=LOOKUP(1,0/FREQUENCY(1,ISNA(MATCH($A$2:$A$9,$F$2:F2,))*1),$A$2:$A$3)&''

下拉填充

注意这个公式不能顶格书写,不能从第一行开始输入公式,只能从第二行以后开始输入公式。

这里需要说明,下拉填充是为了让新手更容易应用。很多时候我们用数组公式会选择一片区域后再输入公式,好处是不怕原始数据有不连续区域,也不需要考虑相对引用和绝对引用。

从以上方法对比可以看出,如果不是为了刻意研究公式,只需要删除重复保留唯一,最简单的还是删除重复项。当然公式法也有它的应用,例如找出重复项,只保留一个。辅助列的方法很简单,先找出重复项,最后再删除重复值,如图

B2输入公式=IF(COUNTIF($A$2:$A$9,A2)>1,A2,'')

复制B列数据到C列,然后选择性粘贴,数值,再通过数据选项删除重复值保留唯一即可。

如果我们不用辅助列,可以输入如下公式,如图

选择B2:B9后输入公式

=IFERROR(INDEX(A2:A9,SMALL(IF((COUNTIF(A2:A9,A2:A9)>1)*(MATCH(A2:A9,A2:A9,)=ROW(1:8)),ROW(1:8),4^10),ROW(1:8))),''),然后按ctrl+shift+enter

这里可以看出数组公式不需要下拉,也不需要考虑相对引用和绝对应用。

以上是我对去重复保留唯一的一些认识,不足之处请大家指正,谢谢!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多