微信公眾號:excelperfect
使用SMALL函數,可以獲得一組數值中指定第幾小的數值。
什麼情況下使用SMALL函數?
SMALL函數數據組中第k個最小值。它能夠:
獲取單元格區域中第3個最小值
求n個最小值之和
返回單元格區域中的負值
動態排序單元格區域中的數值
獲取單元格區域中唯一值列表
SMALL函數語法
SMALL函數有2個參數,其語法如下:
SMALL函數陷阱
如果指定的最小值數大於數組總數,則會返回#NUM!錯誤。
示例1: 獲取單元格區域中第3個最小值
要獲取單元格區域A1:A5中第3小的值,使用公式:
=SMALL(A1:A5,3)
返回數值3,即該區域中第3小的值為3。
下面的公式獲取數組中第3小值:
=SMALL({50,20,30,60,50,10},3)
返回30。
示例2: 求n個最小值之和
下圖所示工作表中,命名區域Data為A1:A9。求區域Data中前3個最小值之和的公式為:
=SUM(SMALL(Data,{1,2,3}))
這是一個數組公式,因此輸入完成後要按Ctrl+Shift+Enter組合鍵。公式依次獲取Data區域中第1個、第2個、第3個最小值,然後將它們相加。
也可以使用數組公式:
=SUM(SMALL(Data,ROW(INDIRECT("1:3"))))
相比於上面的公式,這個公式使用了ROW函數和INDIRECT函數,將更靈活。
示例3: 返回單元格區域中的負值
單元格區域A2:A10命名為「Num」。將該區域中所有負值提了出來的公式為:
=INDEX(Num,SMALL(IF(Num<0,ROW(INDIRECT("1:"& ROWS(Num)))),ROW(INDIRECT("1:" & ROWS(Num)))))
該公式為數組公式,因此選取與Num區域相同大小的區域,輸入公式後按Ctrl+Shift+Enter組合鍵。
上述公式獲得的結果包含#NUM!錯誤值,可以使用IFERROR函數消除錯誤值:
=IFERROR(INDEX(Num,SMALL(IF(Num<0,ROW(INDIRECT("1:"& ROWS(Num)))),ROW(INDIRECT("1:" &ROWS(Num))))),"")
示例4: 動態排序單元格區域中的數值
如下圖所示的工作表,將單元格區域A1:A15命名為SortNum,現在要求對該區域中的數值態排序,即在該區域輸入數值時,列D中的排序會自動調整。
下面的數組公式由小到大排列SortNum區域的數值:
=IFERROR(SMALL(SortNum,ROW(INDIRECT("1:"& ROWS(SortNum)))),"")
示例5: 獲取單元格區域中唯一值列表
如下圖所示的工作表,單元格區域A1:A8命名為「DataValue」,可以看出,該區域中有許多重複值。下面的數組公式提取並返回該區域中唯一值列表:
=IFERROR(INDEX(DataValue,SMALL(IF(MATCH(DataValue,DataValue,0)=ROW(INDIRECT("1:"&ROWS(DataValue))),MATCH(DataValue,DataValue,0),""),ROW(INDIRECT("1:"& ROWS(DataValue))))),"")
本文屬原創文章,轉載請聯繫我(xhdsxfjy@163.com)或者註明出處。
歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。
歡迎關注[完美Excel]微信公眾號:
方法1—在微信「添加朋友」或者通訊錄中搜索「完美Excel」或者「excelperfect」後點擊關注。
方法2—掃一掃下面的二維碼