使用SMALL函數(shù),可以獲得一組數(shù)值中指定第幾小的數(shù)值。
什么情況下使用SMALL函數(shù)?
SMALL函數(shù)數(shù)據(jù)組中第k個最小值。它能夠:
獲取單元格區(qū)域中第3個最小值
求n個最小值之和
返回單元格區(qū)域中的負(fù)值
動態(tài)排序單元格區(qū)域中的數(shù)值
獲取單元格區(qū)域中唯一值列表
SMALL函數(shù)語法
SMALL函數(shù)有2個參數(shù),其語法如下:
SMALL(array,k)
array: 代表要求第k個最小值點的數(shù)值數(shù)組或者數(shù)值區(qū)域。
k: 指定要求第幾個最小值。
如果參數(shù)array中包含任何非數(shù)字值,則會忽略該值。如果包含的值均為錯誤值,則返回其中的第1個錯誤值。如果包含相等的數(shù)值,那么會依次顯示該值。
SMALL函數(shù)陷阱
如果指定的最小值數(shù)大于數(shù)組總數(shù),則會返回#NUM!錯誤。
示例1: 獲取單元格區(qū)域中第3個最小值
要獲取單元格區(qū)域A1:A5中第3小的值,使用公式:
=SMALL(A1:A5,3)
返回數(shù)值3,即該區(qū)域中第3小的值為3。
下面的公式獲取數(shù)組中第3小值:
=SMALL({50,20,30,60,50,10},3)
返回30。
示例2: 求n個最小值之和
下圖所示工作表中,命名區(qū)域Data為A1:A9。求區(qū)域Data中前3個最小值之和的公式為:
=SUM(SMALL(Data,{1,2,3}))
這是一個數(shù)組公式,因此輸入完成后要按Ctrl+Shift+Enter組合鍵。公式依次獲取Data區(qū)域中第1個、第2個、第3個最小值,然后將它們相加。
也可以使用數(shù)組公式:
=SUM(SMALL(Data,ROW(INDIRECT(“1:3”))))
相比于上面的公式,這個公式使用了ROW函數(shù)和INDIRECT函數(shù),將更靈活。
示例3: 返回單元格區(qū)域中的負(fù)值
單元格區(qū)域A2:A10命名為“Num”。將該區(qū)域中所有負(fù)值提了出來的公式為:
=INDEX(Num,SMALL(IF(Num<0,ROW(INDIRECT(“1:”& ROWS(Num)))),ROW(INDIRECT(“1:” & ROWS(Num)))))
該公式為數(shù)組公式,因此選取與Num區(qū)域相同大小的區(qū)域,輸入公式后按Ctrl+Shift+Enter組合鍵。
上述公式獲得的結(jié)果包含#NUM!錯誤值,可以使用IFERROR函數(shù)消除錯誤值:
=IFERROR(INDEX(Num,SMALL(IF(Num<0,ROW(INDIRECT(“1:”& ROWS(Num)))),ROW(INDIRECT(“1:” &ROWS(Num))))),””)
示例4: 動態(tài)排序單元格區(qū)域中的數(shù)值
如下圖所示的工作表,將單元格區(qū)域A1:A15命名為SortNum,現(xiàn)在要求對該區(qū)域中的數(shù)值態(tài)排序,即在該區(qū)域輸入數(shù)值時,列D中的排序會自動調(diào)整。
下面的數(shù)組公式由小到大排列SortNum區(qū)域的數(shù)值:
=IFERROR(SMALL(SortNum,ROW(INDIRECT(“1:”& ROWS(SortNum)))),””)
示例5: 獲取單元格區(qū)域中唯一值列表
如下圖所示的工作表,單元格區(qū)域A1:A8命名為“DataValue”,可以看出,該區(qū)域中有許多重復(fù)值。下面的數(shù)組公式提取并返回該區(qū)域中唯一值列表:
=IFERROR(INDEX(DataValue,SMALL(IF(MATCH(DataValue,DataValue,0)=ROW(INDIRECT(“1:”&ROWS(DataValue))),MATCH(DataValue,DataValue,0),””),ROW(INDIRECT(“1:”& ROWS(DataValue))))),””)