摘 要:當(dāng)今日常辦公中用戶經(jīng)常要面對紛繁復(fù)雜的數(shù)據(jù)處理,其中有大量重復(fù)的數(shù)據(jù)信息需要過濾,怎樣才能最直接快速地找出我們想要的那個唯一數(shù)據(jù),利用EXCEL辦公軟件自帶的多種方法都可達(dá)到目的。
關(guān)鍵詞:重復(fù)數(shù)據(jù);函數(shù);數(shù)組;數(shù)據(jù)透視表;SQL;高級篩選;VBA
中圖分類號:TP391.13
當(dāng)今日常辦公中用戶經(jīng)常要面對紛繁復(fù)雜的數(shù)據(jù)處理,其中有大量重復(fù)的數(shù)據(jù)信息需要過濾,怎樣才能最直接快速地找出我們想要的那個唯一數(shù)據(jù),本文將以表1所示數(shù)據(jù)源為例,來分析EXCEL提供的多種功能實現(xiàn)數(shù)據(jù)查重。
1 利用函數(shù)對數(shù)據(jù)查重
在B列設(shè)置一列輔助列,然后在B2單元格輸入公式=COUNTIF($A$2:$A$16,A2),向下填充,這樣得到的結(jié)果是出現(xiàn)1次花品的輔助列里顯示為1,出現(xiàn)2次的顯示為2,以此類推。然后再對B列進(jìn)行自動篩選,條件選擇1,得到的結(jié)果全部是不重復(fù)值,即完成數(shù)據(jù)的查重。
利用函數(shù)和篩選兩步就可以完成單列數(shù)據(jù)的查重,可謂簡單易懂,用到的都是EXCEL最常用的功能,不需要經(jīng)過深思熟慮就可完成,當(dāng)然參照此方法我們還可聯(lián)想到“條件格式化”法,如圖1所示,在“條件格式——新建規(guī)則——使用公式確定要設(shè)置格式的單元格”對話框中,在公式編輯欄中填入“=COUNTIF($A$2:$A$16,A2)>1”,然后設(shè)置滿足條件后格式的變化,例如數(shù)據(jù)一旦重復(fù)后,單元格就會填充上相同的顏色。條件格式的優(yōu)點是數(shù)據(jù)發(fā)生變化,格式也隨之改變,如果修改數(shù)據(jù)使它們不再相同,那么單元格的填充顏色也會自行消失。
另外,利用數(shù)組函數(shù)提取也可實現(xiàn)數(shù)據(jù)查重,我們以index函數(shù)為例說明。在C2單元格中輸入=INDEX($A$1:$A$17,SMALL(IF(MATCH($A$2:$A$16,$A$1:$A$16,)=ROW($A$2:$A$16),ROW($A$2:$A$16),17),ROW(A1))),然后在編輯欄中同時按下Ctrl+Shift+Enter三個組合鍵,實現(xiàn)數(shù)組計算,MATCH($A$2:$A$16,$A$1:$A$16,) 此處用意為:將原數(shù)據(jù)源中的數(shù)據(jù),標(biāo)記上位置序號,只要是相同的數(shù)據(jù)將得到相同的序號。MATCH($A$2:$A$16,$A$1:$A$16,)=ROW($A$2:$A$16)用到的序號與行號進(jìn)行比較,(ROW函數(shù)將會得到一個行序列號),第一次出現(xiàn)的值是與ROW序列號是一致的,第二次出現(xiàn)的序號就會與ROW序列號不同,所以將會得到一個{TRUE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE},IF(MATCH($A$2:$A$16,$A$1:$A$16,)=ROW($A$2:$A$16),ROW($A$2:$A$16),17)利用IF函數(shù),可以很快將TURE與FALSE進(jìn)行區(qū)分,只要是TURE那么得到的值就會是ROW序列號,F(xiàn)ALSE得到的值就是17(這里的17指的是數(shù)據(jù)源后第一個空白的行號)。SMALL(IF(MATCH($A$2:$A$16,$A$1:$A$16,)=ROW($A$2:$A$16),ROW($A$2:$A$16),17),ROW(A1))small函數(shù)將得到的值進(jìn)行從小至大排序并提取ROW()小的值。=INDEX($A$1:$A$17,SMALL(IF(MATCH($A$2:$A$16,$A$1:$A$16,)=ROW($A$2:$A$16),ROW($A$2:$A$16),17),ROW(A1)))完成提取。利用函數(shù)的優(yōu)點是,自動化的提取,結(jié)果可以隨數(shù)據(jù)源的變化而變化,但缺點也比較明顯,在應(yīng)對大量數(shù)據(jù)時,程序容易假死。
2 數(shù)據(jù)透視表查重
此方法是將光標(biāo)定位于數(shù)據(jù)單元格中,使用“數(shù)據(jù)透視表”命令,設(shè)置數(shù)據(jù)透視的結(jié)果表放置于現(xiàn)有工作表中的B1單元格中,透視表布局為:將“花品”拖到行標(biāo)簽位置,這樣就完成了不重復(fù)值的提取,最終查重成功。這種方法簡單直接,數(shù)據(jù)源一旦變化,結(jié)果也變化,也是自動化的處理,但是要配合數(shù)據(jù)透視表的不斷刷新。
3 用SQL方法查重
此方法用到數(shù)據(jù)連接到工作薄文件對應(yīng)的工作表中,并寫入SQL代碼,在屬性中彈出對話框后,點擊定義,然后在命令文本中寫入代碼SELECT distinct花品FROM [$A1:A16],并確定。要勾選表的復(fù)選項,確定放置位置為工作表的B1單元為起始位置,操作完成。在SQL中,SELECT與FROM聯(lián)合使用指的是從(FROM)工作表區(qū)域為:工作表中的A1:A16區(qū)域中查找花品;DISTINCT:用來過濾掉重復(fù)記錄,只保留一條。優(yōu)點也是自動化查重,但對數(shù)據(jù)類型要求比較高,比如說數(shù)值型,文本型,日期型。
4 高級篩選法查重
使用到“數(shù)據(jù)”命令中的——排序和篩選——高級,在彈出的高級篩選對話框中要做相應(yīng)設(shè)置,方式使用“將篩選結(jié)果復(fù)制到其他位置”,選擇原數(shù)據(jù)表為列表區(qū)域,“復(fù)制到”則選用新單元格,比如C1,最后勾選命令“選擇不重復(fù)的記錄”,操作完成。此方法非常簡單快速,但是缺點非常明顯,即數(shù)據(jù)源一旦發(fā)生變化,就需要重新進(jìn)行高級篩選,但可以配合錄宏進(jìn)行改善。
5 VBA法查重
用VBA(字典+數(shù)組)也可實現(xiàn)數(shù)據(jù)查重。首先得調(diào)用出VBA代碼窗口,方法非常多:快捷鍵:Alt+F11;也可以在工作表標(biāo)簽處單擊右鍵——查看代碼;或者單擊開發(fā)工具——控件組——查看代碼。然后在代碼窗口中填入如下代碼:
參考文獻(xiàn):
[1]張衛(wèi)平.輕松解決Excel數(shù)據(jù)重復(fù)輸入[N].中國電腦教育報,2004-12.
作者簡介:李雙萍(1978.11-),女,云南昆明人,碩士,講師,研究方向:計算機(jī)及應(yīng)用技術(shù)、計算機(jī)網(wǎng)絡(luò)分類。
作者單位:云南工商學(xué)院 機(jī)電信息院,昆明 650000