SMALL函数求一组数值中第几小的数值,其第1个参数指定数据组,第2个参数指定要求的第几小的值,其基本用法如图1所示。
SMALL函数求一组数值中第几小的数值,其第1个参数指定数据组,第2个参数指定要求的第几小的值,其基本用法如图1所示。
图1
SMALL函数之美
SMALL函数的原理很简单,但将其组合在公式中,能够帮助我们按顺序获取数据,这可能就是SMALL函数的美妙之处。
结合ROW函数对数据排序
如图2所示,在单元格C1中输入公式:
=SMALL($A$1:$A$6,ROW(A1))
下拉至单元格C6,即将单元格区域A1:A6中的数字由小到大排列。
图2
也可以选择单元格C1:C6,输入数组公式:
=SMALL(A1:A6,ROW(1:6))
结果相同,如图3所示。
图3
这样,原数据区域A1:A6中的数据改变时,排序区域C1:C6会实时更新。
结合IF函数获取数据的位置
如图4所示,单元格区域A1:A6中放置示例数据,想要得到“Excel”在该区域第3次出现的位置,使用数组公式:
=SMALL(IF($A$1:$A$6=”Excel”,ROW($A$1:$A$6)-ROW($A$1)+1),3)
公式中:
$A$1:$A$6=”Excel”表示单元格区域中的值与“Excel”相比较,得到逻辑值组成的数组{TRUE;FALSE;TRUE;FALSE;FALSE;TRUE}。
ROW($A$1:$A$6)-ROW($A$1)+1生成由单元格区域的行号组成的数字数组{1;2;3;4;5;6}。
IF函数得到数组{1;FALSE;3;FALSE;FALSE;6},作为SMALL函数的数据值参数,取第3个最小值即为6,表明“Excel”第3次出现在第6行。
图4
注意到,SMALL函数忽略逻辑值。
在很多公式中都使用了该示例的原理,来获取想要的数据的位置,然后获取该数据。