獲取Excel單元格區(qū)域中的不重復(fù)值|office辦公軟件入門基礎(chǔ)教程
在一個(gè)單元格區(qū)域中含有重復(fù)值,使用公式來獲取該區(qū)域中的不重復(fù)值。
例如,下圖所示的工作表單元格區(qū)域A1:A13,將其命名為Data。在該區(qū)域中,含有很多重復(fù)值?,F(xiàn)在要獲取該區(qū)域中的不重復(fù)值。
先不看答案,動(dòng)手試一試。
公式思路
首先求出單元格區(qū)域Data中每個(gè)值在區(qū)域中第1次出現(xiàn)的行號,然后根據(jù)行號取出這些值。
公式解析
在單元格區(qū)域C1:C13中輸入下面的數(shù)組公式:
=INDEX(Data,SMALL(IF(MATCH(Data,Data,0)=ROW(INDIRECT(“1:”&ROWS(Data))),MATCH(Data,Data,0),””),ROW(INDIRECT(“1:”&ROWS(Data)))))
按Ctrl+Shift+Enter組合鍵,即可得到區(qū)域Data中不重復(fù)值,如下圖所示:
公式中,MATCH(Data,Data,0)得到數(shù)組{1;1;1;4;4;4;7;7;7;10;10;7;1},即區(qū)域Data中每個(gè)值在該區(qū)域中出現(xiàn)的行號。ROW(INDIRECT(“1:”&ROWS(Data)))得到數(shù)組{1;2;3;4;5;6;7;8;9;10;11;12;13},INDIRECT函數(shù)將“1:13”轉(zhuǎn)換成行區(qū)域$1:$13。
MATCH(Data,Data,0)=ROW(INDIRECT(“1:”&ROWS(Data)))即上述兩個(gè)數(shù)組相比較,得到數(shù)組{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE},IF函數(shù)根據(jù)該數(shù)組獲取MATCH(Data,Data,0)所得數(shù)組中的值,即{1;””;””;4;””;””;7;””;””;10;””;””;””},SMALL函數(shù)分別取這個(gè)數(shù)組的第1、2、3、…、13最小值,即{1;4;7;10;””;””;””;””;””;””;””;””;””},將此數(shù)組作為INDEX 函數(shù)的參數(shù),分別取區(qū)域Data中對應(yīng)行的值。
從上圖所示的工作表中可以看出,對于數(shù)組公式中多余的單元格會(huì)顯示#NUM!。使用下面的數(shù)組公式避免顯示#NUM!。
=IFERROR(INDEX(Data,SMALL(IF(MATCH(Data,Data,0)=ROW(INDIRECT(“1:”& ROWS(Data))),MATCH(Data,Data,0),””),ROW(INDIRECT(“1:”& ROWS(Data))))),””)
IFERROR函數(shù)在錯(cuò)誤值時(shí)輸入空。
小結(jié)
ROW函數(shù)中不能再包括其它求值的函數(shù),此時(shí)使用INDIRECT函數(shù)來間接引用。
IFERROR函數(shù)是Excel 2007及其后的版本中的函數(shù),當(dāng)?shù)谝粋€(gè)參數(shù)為錯(cuò)誤值時(shí),將另一個(gè)參數(shù)作為返回值。若要在Excel 2013中得到同樣的結(jié)果,則要將IF函數(shù)和ISERR函數(shù)結(jié)合使用。
公式中蘊(yùn)含著一些通用思想,可以在其他類似情形中借鑒。
版權(quán)聲明:
本站所有文章和圖片均來自用戶分享和網(wǎng)絡(luò)收集,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系網(wǎng)站客服處理。