在 Excel 中,Small函數(shù)用于返回?cái)?shù)組或引用單元格中從小到大排序的指定數(shù)值,例如第一個(gè)最小值、第二個(gè)最小值等。它只有兩個(gè)參數(shù),一個(gè)是 Array,另一個(gè)是 k,其中 k 不能小于等于 0 且不能大于數(shù)組元素總個(gè)數(shù),否則會(huì)返回錯(cuò)誤。
Small函數(shù)常與 Index、IF、Match、Row 函數(shù)組合,一方面實(shí)現(xiàn)一對(duì)多查找,另一方面實(shí)現(xiàn)篩選重復(fù)值,這兩個(gè)方面的應(yīng)用十分廣泛。下面先看Small函數(shù)的基本用法,再看與各函數(shù)組合的擴(kuò)展應(yīng)用。
1、表達(dá)式:SMALL(Array,k)
中文表達(dá)式:SMALL(數(shù)組或引用單元格區(qū)域, 返回位置[從小到大])
2、說(shuō)明:
如果 Array 為空和 k 小于等于 0 或 k 大于 Array 中數(shù)值個(gè)數(shù),Small 都返回?cái)?shù)字錯(cuò)誤值 #NUM!。
(一)Array 中有重復(fù)值的實(shí)例
1、雙擊 C8 單元格,把公式 =SMALL(C2:C7,3) 復(fù)制到 C8,按回車,返回第三個(gè)最小值 3.5;雙擊 C8,把 3 改為 4,按回車,返回第四個(gè)最小值 5;再次雙擊 C8,把 4 改為 5,按回車,返回第五個(gè)最小值 5;操作過(guò)程步驟,如圖1所示:
圖1
2、公式說(shuō)明:
A、公式 =SMALL(C2:C7,3) 中,C2:C7 為查找區(qū)域,3 為返回位置;公式的意思是在 C2 至 C7 中返回第三個(gè)最值,C2:C7 不用排序。
B、公式 =SMALL(C2:C7,4) 和 =SMALL(C2:C7,5) 都返回 5,說(shuō)明Small函數(shù)把重復(fù)值排到兩個(gè)不同的位置,如例中的 5,一個(gè)排在第四位,另一個(gè)排在第五位。
(二)返回?cái)?shù)字錯(cuò)誤值 #NUM! 的實(shí)例
1、雙擊 D8 單元格,把公式 =SMALL(D2:D7,0) 復(fù)制到 D8,按回車,返回?cái)?shù)字錯(cuò)誤值 #NUM!;雙擊 D8,把 0 改為 7,按回車,同樣返回#NUM!;操作過(guò)程步驟,如圖2所示:
圖2
2、公式 =SMALL(D2:D7,0) 在 D2:D7 中返回第 0 個(gè)最小值,由于 K 必須大于 0,所以返回 #NUM!錯(cuò)誤;而公式 =SMALL(D2:D7,7) 返回第七個(gè)最小值,由于 D2:D7 中只有 6 個(gè)值,而 K 必須小于等于 6,所以也返回 #NUM!錯(cuò)誤。
(一)Index + Small + IF + Row函數(shù)組合實(shí)現(xiàn)一對(duì)多查找
Index + Small + IF + Row 組合的詳細(xì)解析,在《Excel Index函數(shù)的使用方法及與Match、Small、If配合返回行列對(duì)應(yīng)的多個(gè)值和一對(duì)多、多對(duì)多查找》一文中已經(jīng)介紹,查看請(qǐng)點(diǎn)擊書名號(hào)中的文章標(biāo)題。
(二)Index + Small + IF + Match + Row函數(shù)組合實(shí)現(xiàn)篩選不重復(fù)值(唯一值)
1、雙擊 E2 單元格,把公式 =IFERROR(INDEX(B:B,SMALL(IF(MATCH(B$2:B$8,B$2:B$8,)=ROW($1:$7),ROW($2:$8)),ROW(A1))),"") 復(fù)制到E2,按 Ctrl + Shift + 回車,返回“銷售部”;把鼠標(biāo)移到 E2 右下角的單元格填充柄上,鼠標(biāo)變?yōu)榧犹?hào)(+)后,按住左鍵,往下拖一直拖到出現(xiàn)空單元格,則篩選出 B 列“部門”的所有不重復(fù)值;選中 E2,往右拖,返回 C 列的第一個(gè)不重復(fù)值“員工”,再往下拖,也一直拖到出現(xiàn)空單元格,則返回 C 列的所有不重復(fù)值;操作過(guò)程步驟,如圖3所示:
圖3
2、公式 =IFERROR(INDEX(B:B,SMALL(IF(MATCH(B$2:B$8,B$2:B$8,)=ROW($1:$7),ROW($2:$8)),ROW(A1))),"") 說(shuō)明:
A、B$2 中的 $ 表示對(duì)行的絕對(duì)引用,往下拖時(shí),2 不會(huì)變?yōu)?3、4 等;B$2:B$8 以數(shù)組形式返回 B2 至 B8 中的所有部門,即 {"銷售部";"行政部";"銷售部";"財(cái)務(wù)部";"行政部";"銷售部";"財(cái)務(wù)部"}。
B、MATCH(B$2:B$8,B$2:B$8,) 執(zhí)行時(shí),第一次取出 B2(即“銷售部”),然后返回“銷售部”在 B2:B8 中的位置 1;第二次取出 B3(即“行政部”),也返回在 B2:B8 中的位置 2;其它的以此類推,最后返回?cái)?shù)組 {1;2;1;4;2;1;4};這里最主要的是相同的值返回一樣的序號(hào)。
C、$1:$7 用于返回 1 到 7 的數(shù)組,即 {1;2;3;4;5;6;7};ROW($1:$7) 用于返回 1 到 7 行的行號(hào),即{1;2;3;4;5;6;7}。ROW($2:$8) 用于返回 2 到 8 行的行號(hào),即{2;3;4;5;6;7;8}。
D、則 IF(MATCH(B$2:B$8,B$2:B$8,)=ROW($1:$7),ROW($2:$8)) 變?yōu)?IF({1;2;1;4;2;1;4}={1;2;3;4;5;6;7},{2;3;4;5;6;7;8}) ,接著從= 左邊的數(shù)組中取出第一個(gè)元素 1,再?gòu)?= 右邊的數(shù)組中取出第一個(gè)元素 1,它們相等,所以返回 True;第二次從 = 左邊的數(shù)組中取出第二個(gè)元素 2 和從 = 右邊的數(shù)組中取出第二個(gè)元素 2,它們也相等,所以也返回 True;其它的以此類推,最后返回?cái)?shù)組{TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE};這一步主要是過(guò)濾掉重復(fù)數(shù)值,只留下重復(fù)“部門”的第一個(gè)部門,為 True 的將留下。
E、則 IF({1;2;1;4;2;1;4}={1;2;3;4;5;6;7},{2;3;4;5;6;7;8}) 變?yōu)?IF({TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE},
{2;3;4;5;6;7;8}),接著從條件的數(shù)組中取出第一個(gè)元素 TRUE,它為真,所以返回 If 的第二個(gè)參數(shù)(即“數(shù)字?jǐn)?shù)組”)中對(duì)應(yīng)元素 2;第二次取出第二個(gè)元素 TRUE,返回?cái)?shù)字?jǐn)?shù)組中對(duì)應(yīng)元素 3;第三次取出 FALSE,它為假,所以返回 If 的第三個(gè)參數(shù),由于這里省略了,默認(rèn)返回 FALSE;最后返回 {2;3;FALSE;5;FALSE;FALSE;FALSE}。
F、ROW(A1) 用于返回 A1 的行號(hào) 1;則 SMALL(IF(MATCH(B$2:B$8,B$2:B$8,)=ROW($1:$7),ROW($2:$8)),ROW(A1)) 變?yōu)?SMALL({2;3;FALSE;5;FALSE;FALSE;FALSE},1),接著在數(shù)組中返回第一個(gè)最小值 2。
G、則公式變?yōu)?=IFERROR(INDEX(B:B,2),""),B:B 表示引用 B 列;接著用Index函數(shù)返回 B 列第二行的值“銷售部”;IfError 是錯(cuò)誤判斷函數(shù),在前面篇章已多次介紹。
3、公式 =IFERROR(INDEX(B:B,SMALL(IF(MATCH(B$2:B$8,B$2:B$8,)=ROW($1:$7),ROW($2:$8)),ROW(A1))),"") 還有以下兩種寫法:
=IFERROR(INDEX(B:B,SMALL(IF(MATCH(B$2:B$8,B$2:B$8,)=ROW(B$1:B$7),ROW(B$2:B$8)),ROW(A1))),"")
=IFERROR(INDEX(B:B,SMALL(IF(MATCH(B$2:B$8,B$2:B$8,)=ROW(B$2:B$8)-1,ROW(B$2:B$8)),ROW(A1))),"")
聯(lián)系客服