问题情境
下表记录了每个人的投票情况:
寻找得票最多的名字。
公式实现
在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}
模式。MULT(MATCH(B$2:B$16,B$2:B$16,)
模式。MULT计算最频繁的位置,即{ 1;2};
小(模式。MULT(MATCH(B$2:B$16,B$2:B$16,),ROW(A1)):
因为出现最多的地方有两个,第一个地方的名字ROW(A1)显示在D2,第二个地方的名字ROW(A2)显示在D3。
指数(B$2:B$16,小(模式。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级别时,当没有得票最多的名字时,就会出现空值。