问题情境
问题情境
如下样表,记录了每个人的得票情况:
求统计得票最多的姓名。
公式实现
在D2单元格输入公式:
=IFERROR(INDEX(B$2:B$16,SMALL(MODE.MULT(MATCH(B$2:B$16,B$2:B$16,)),ROW(A1))),””)
即得得票最多的姓名。
如果得票最多的不止一位,可向下填充公式,得出其它姓名。
如下图:
公式解析
MATCH(B$2:B$16,B$2:B$16,):
在B2:B16区域,依次匹配B2:B16单元格中每一位姓名出现的位置。MATCH函数匹配位置,只能匹配第一次出现时的位置,比如“王一”,虽然出现在第1、6、7、11、13位上,但MATCHA的返回值都是1,所以本部分返回的是各个姓名第一次出现位置的数组:
{1;2;2;4;4;1;1;2;9;2;1;9;1;2;10}
MODE.MULT(MATCH(B$2:B$16,B$2:B$16,):
MODE.MULT计算出现最多的位次,即{1;2};
SMALL(MODE.MULT(MATCH(B$2:B$16,B$2:B$16,)),ROW(A1)):
因为有两个出现最多的位次,所以在D2显示ROW(A1)即第一个位次的姓名,D3显示ROW(A2)即第二个位次的姓名;
INDEX(B$2:B$16,SMALL(MODE.MULT(MATCH(B$2:B$16,B$2:B$16,)),ROW(A1))):
用INDEX函数显示B2:B16区域中对应位次的姓名;
IFERROR(INDEX(B$2:B$16,SMALL(MODE.MULT(MATCH(B$2:B$16,B$2:B$16,)),ROW(A1))),””):
屏蔽错误值,当公式下拉到D4级以后,再没有得票最多姓名时出现空值。