一、案例
如下圖所示,B2:B10為一份名單,其中部分姓名出現(xiàn)多次。要求提取非重復(fù)值,重復(fù)出現(xiàn)的姓名只提取一次,結(jié)果如D2:D8所示。
二、操作步驟
方法一:刪除重復(fù)值
選中B1:B10單元格區(qū)域,單擊【數(shù)據(jù)】-【刪除重復(fù)值】,打開【刪除重復(fù)值】對話框。如下圖所示:
由于B1:B10包含標(biāo)題“姓名”,因此需要勾選【數(shù)據(jù)包含標(biāo)題】。
單擊【確定】后,即可刪除B2:B10中重復(fù)出現(xiàn)的姓名,只保留唯一值。
方法二、高級篩選
選中B1:B10中任一單元格,單擊【數(shù)據(jù)】-【高級篩選】,打開【高級篩選】對話框,如下圖所示:
“列表區(qū)域”指需要進(jìn)行篩選的區(qū)域,本例為B1:B10。
本例將提取的唯一值保存在D列,因此選擇【將篩選結(jié)果復(fù)制到其他位置】,【復(fù)制到】選擇D1單元格。勾選【選擇不重復(fù)的記錄】。
單擊確定后,即可得到B1:B10區(qū)域的非重復(fù)值。
方法三、INDEX+MATCH+COUNTIF函數(shù)法
在D2單元格輸入公式
=IFERROR(INDEX($B$2:$B$10,MATCH(0,COUNTIF($D$1:D1,$B$2:$B$10),0)),"")
按Ctrl+Shift+Enter結(jié)束公式輸入。
公式解析:
(1)INDEX函數(shù)用于返回指定行列交叉處單元格的值,例如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個參數(shù)為MATCH+COUNTIF函數(shù)返回的值。
(2)COUNTIF($D$1:D1,$B$2:$B$10)指B2:B10每個單元格的值在D1:D1中出現(xiàn)的次數(shù)。D1單元格的值為“姓名”,因此B2:B10中每個單元格的值在D1:D1出現(xiàn)的次數(shù)均為0,此時COUNTIF函數(shù)返回的結(jié)果為{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函數(shù)返回的{0;0;0;0;0;0;0;0;0}中精確查找(MATCH函數(shù)第3個參數(shù)“查找類型”為0,屬于精確查找)“0”值。MATCH函數(shù)會查找到第一次出現(xiàn)“0”的位置,返回值為“1”,那么INDEX($B$2:$B$10,1)返回值為“皮卡球”。
(4)當(dāng)公式向下復(fù)制到D3單元格時,COUNTIF($D$1:D1,$B$2:$B$10)變?yōu)镃OUNTIF($D$1:D2,$B$2:$B$10),返回結(jié)果{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)返回結(jié)果為“2”。INDEX($B$2:$B$10,2)返回值為“朱豬俠”。
方法四、LOOKUP+COUNTIF函數(shù)法
在D2單元格輸入公式
=IFERROR(LOOKUP(2,1/(COUNTIF($D$1:D1,$B$2:$B$10)=0),$B$2:$B$10),"")
拖動填充柄向下復(fù)制公式。
公式解析:
(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”,并返回與查找到的值對應(yīng)位置的B2:B10的值。由于無法查找到“2”,LOOKUP函數(shù)會返回最后一個“1”對應(yīng)位置的B2:B10的值,即B10單元格的“易水寒”。
(3)當(dāng)D2單元格的公式向下復(fù)制到D3單元格時,1/(COUNTIF($D$1:D2,$B$2:$B$10)=0)返回
{1;1;1;1;1;1;1;1;#DIV/0!}。返回錯誤值“#DIV/0!”是因為B10單元格的值“易水寒”已經(jīng)出現(xiàn)在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函數(shù)會忽略錯誤值,并查找到最后一個“1”所在的位置,并返回對應(yīng)位置的B9單元格的值即“亞瑟”。
END