获取不重复值的几种方法
在很多情况下,我们都要获取不重复值,以方便进一步使用。
下面介绍几种获取不重复值的方法,供参考。
如下图1所示的示例工作表,希望获取不重复的班级列表。
图1
方法1:使用高级筛选
在Excel中,单击“数据”选项卡“排序和筛选”组中的“高级”按钮。在“高级筛选”对话框中,选中“将筛选结果复制到其他位置”,列表区域为:B1:B7,复制到单元格E1,并选中“选择不重复的记录”复选框,如图2所示。
图2
单击“确定”后的结果如图3所示。
图3
方法2:使用数据透视表
首先,选择单元格区域A1:C7中的任一单元格。
然后,单击“插入”选项卡中的“数据透视表”。在“创建数据透视表”对话框中的设置如图4所示。
图4
接着,选择“班级”为行字段,结果如图5所示。
图5
复制并粘贴数据透视表中的值到其他行,如图6所示。
图6
最后,删除创建的数据透视表。
上面两种方法都非常方便且简单,但当修改数据后,结果不能自动更新。然而,使用公式时,当数据变化时结果会自动更新。
方法3:使用公式
3.1 使用辅助列
在单元格D2中输入公式:
=SUM(COUNTIF(B$2:B2,B2)=1,D1)
然后,下拉至单元格D7。
在单元格D9中输入公式:
=MAX(D2:D7)
获取单元格区域B2:B7中不重复值的个数。
在单元格D13中输入公式:
=IF(C13>D$10,"",INDEX(B$2:B$7,MATCH(C13,$D$2:$D$7,0)))
然后下拉直至出现空单元格。
最终的结果如下图7所示。
图7
3.2 使用数组公式(1)
》中介绍的公式。
首先,在单元格E2中输入数组公式:
=SUM(IF(FREQUENCY(IF(B2:B7<>"",MATCH(B2:B7,B2:B7,0)),ROW(B2:B7)-ROW(B2)+1),1))
求出单元格区域B2:B7中不重复值的个数。
在单元格E5中输入数组公式:
=IF(ROWS(E$5:E5)>$E$2,"",INDEX($B$2:$B$7,SMALL(IF(FREQUENCY(IF($B$2:$B$7<>"",MATCH($B$2:$B$7,$B$2:$B$7,0)),ROW($B$2:$B$7)-ROW($B$2)+1),ROW($B$2:$B$7)-ROW($B$2)+1),ROWS(E$5:E5))))
得到第1个值。
然后将公式下拉至出现空单元格为止,结果如图8所示。
图8
3.3 使用数组公式(2)
》中介绍的公式,也是在《Excel公式练习8:获取单元格区域中的不重复值
》中详细讲解过的公式。
选取单元格区域E2:E7,输入数组公式:
=IFERROR(INDEX(B2:B7,SMALL(IF(MATCH(B2:B7,B2:B7,0)=ROW(INDIRECT("1:"&ROWS(B2:B7))),MATCH(B2:B7,B2:B7,0),""),ROW(INDIRECT("1:"& ROWS(B2:B7))))),"")
结果如图9所示。
图9