本次的練習(xí)是:在一個(gè)單元格區(qū)域中含有重復(fù)值,,使用公式來(lái)獲取該區(qū)域中的不重復(fù)值,。 例如,下圖所示的工作表單元格區(qū)域A1:A13,,將其命名為Data,。在該區(qū)域中,含有很多重復(fù)值?,F(xiàn)在要獲取該區(qū)域中的不重復(fù)值,。 先不看答案,動(dòng)手試一試,。
公式思路 首先求出單元格區(qū)域Data中每個(gè)值在區(qū)域中第1次出現(xiàn)的行號(hào),,然后根據(jù)行號(hào)取出這些值。
公式解析 在單元格區(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)的行號(hào),。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中對(duì)應(yīng)行的值,。
從上圖所示的工作表中可以看出,對(duì)于數(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é)
下期預(yù)告: Excel公式練習(xí)9: 獲取當(dāng)前單元格所在列的列字符 使用一個(gè)公式來(lái)獲取當(dāng)前單元格所在列的列字符,,例如當(dāng)前單元格為B2,,其所在列為列B。 轉(zhuǎn)載本文請(qǐng)聯(lián)系我([email protected])或者注明出處,。 歡迎在下面留言,,完善本文內(nèi)容,讓更多的人學(xué)到更完美的知識(shí),。 |
|
來(lái)自: 江上向東數(shù)峰青 > 《計(jì)算機(jī)》