設置數據有效性時,來源是包含有重複值的數組,能在來源框直接寫函數解決這個重複的問題嗎?
去重複保留唯一的方法有很多,常用的如下:
方法一,數據選項的刪除重複項,適合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
這裡可以看出數組公式不需要下拉,也不需要考慮相對引用和絕對應用。
以上是我對去重複保留唯一的一些認識,不足之處請大家指正,謝謝!
推薦閱讀:
※父母越說,孩子越對著干 | 採用有效方法贏得孩子的合作
※5個瑜伽體式練出「小蠻腰」,簡單粗暴又有效!
※恩城街道自然村落歷史人文普查工作有效開展[恩平市人民政府門戶網站]
※舊護照換新護照,護照上的有效簽證怎麼辦?
※喝芹菜汁可有效降壓