設置數據有效性時,來源是包含有重複值的數組,能在來源框直接寫函數解決這個重複的問題嗎?

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

方法一,數據選項的刪除重複項,適合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個瑜伽體式練出「小蠻腰」,簡單粗暴又有效!
恩城街道自然村落歷史人文普查工作有效開展[恩平市人民政府門戶網站]
舊護照換新護照,護照上的有效簽證怎麼辦?
喝芹菜汁可有效降壓

TAG:數據 | 來源 | 函數 | 有效 | 數組 | 問題 | 這個 | 設置 |