一、案例
如下图所示,B2:B10为一份名单,其中部分姓名出现多次。要求提取非重复值,重复出现的姓名只提取一次,结果如D2:D8所示。
二、操作步骤
方法一:删除重复值
选中B1:B10单元格区域,单击【数据】-【删除重复值】,打开【删除重复值】对话框。如下图所示:
由于B1:B10包含标题“姓名”,因此需要勾选【数据包含标题】。
单击【确定】后,即可删除B2:B10中重复出现的姓名,只保留唯一值。
方法二、高级筛选
选中B1:B10中任一单元格,单击【数据】-【高级筛选】,打开【高级筛选】对话框,如下图所示:
“列表区域”指需要进行筛选的区域,本例为B1:B10。
本例将提取的唯一值保存在D列,因此选择【将筛选结果复制到其他位置】,【复制到】选择D1单元格。勾选【选择不重复的记录】。
单击确定后,即可得到B1:B10区域的非重复值。
方法三、INDEX+MATCH+COUNTIF函数法
在D2单元格输入公式
=IFERROR(INDEX($B$2:$B$10,MATCH(0,COUNTIF($D$1:D1,$B$2:$B$10),0)),"")
按Ctrl+Shift+Enter结束公式输入。
公式解析:
(1)INDEX函数用于返回指定行列交叉处单元格的值,例如INDEX($B$2:$B$10,1)返回B2:B10第1行的值,即B2单元格的值“皮卡球”。INDEX($B$2:$B$10,MATCH(0,COUNTIF($D$1:D1,$B$2:$B$10),0)),第2个参数为MATCH+COUNTIF函数返回的值。
(2)COUNTIF($D$1:D1,$B$2:$B$10)指B2:B10每个单元格的值在D1:D1中出现的次数。D1单元格的值为“姓名”,因此B2:B10中每个单元格的值在D1:D1出现的次数均为0,此时COUNTIF函数返回的结果为{0;0;0;0;0;0;0;0;0}
(3)MATCH(0,COUNTIF($D$1:D1,$B$2:$B$10),0)即
MATCH(0,{0;0;0;0;0;0;0;0;0},0),表示在COUNTIF函数返回的{0;0;0;0;0;0;0;0;0}中精确查找(MATCH函数第3个参数“查找类型”为0,属于精确查找)“0”值。MATCH函数会查找到第一次出现“0”的位置,返回值为“1”,那么INDEX($B$2:$B$10,1)返回值为“皮卡球”。
(4)当公式向下复制到D3单元格时,COUNTIF($D$1:D1,$B$2:$B$10)变为COUNTIF($D$1:D2,$B$2:$B$10),返回结果{1;0;0;0;0;0;0;0;0};MATCH(0,COUNTIF($D$1:D2,$B$2:$B$10),0)即MATCH(0,{1;0;0;0;0;0;0;0;0},0)返回结果为“2”。INDEX($B$2:$B$10,2)返回值为“朱猪侠”。
方法四、LOOKUP+COUNTIF函数法
在D2单元格输入公式
=IFERROR(LOOKUP(2,1/(COUNTIF($D$1:D1,$B$2:$B$10)=0),$B$2:$B$10),"")
拖动填充柄向下复制公式。
公式解析:
(1)COUNTIF($D$1:D1,$B$2:$B$10)返回{0;0;0;0;0;0;0;0;0};
COUNTIF($D$1:D1,$B$2:$B$10)=0返回
{TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE};
1/(COUNTIF($D$1:D1,$B$2:$B$10)=0)返回{1;1;1;1;1;1;1;1;1}
(2)LOOKUP(2,1/(COUNTIF($D$1:D1,$B$2:$B$10)=0),$B$2:$B$10)即LOOKUP(2,{1;1;1;1;1;1;1;1;1},$B$2:$B$10),在{1;1;1;1;1;1;1;1;1}中查找“2”,并返回与查找到的值对应位置的B2:B10的值。由于无法查找到“2”,LOOKUP函数会返回最后一个“1”对应位置的B2:B10的值,即B10单元格的“易水寒”。
(3)当D2单元格的公式向下复制到D3单元格时,1/(COUNTIF($D$1:D2,$B$2:$B$10)=0)返回
{1;1;1;1;1;1;1;1;#DIV/0!}。返回错误值“#DIV/0!”是因为B10单元格的值“易水寒”已经出现在D2单元格。
(4)LOOKUP(2,1/(COUNTIF($D$1:D2,$B$2:$B$10)=0),$B$2:$B$10)即
LOOKUP(2,{1;1;1;1;1;1;1;1; #DIV/0!},$B$2:$B$10)。LOOKUP函数会忽略错误值,并查找到最后一个“1”所在的位置,并返回对应位置的B9单元格的值即“亚瑟”。
END
联系客服