论文部分内容阅读
同事前来求助,如图1所示,她希望能够根据成员的姓名,查询出组长的姓名。实际的数据量当然更多,如果手工查询,工作量可想而知,此时可以借助数组公式完成查询任务。
选择B20单元格,在编辑栏输入公式“=INDEX($A$2:$A$15,SMALL(IF($C$2:$K$15=$A20,ROW($A$2:$A$15)-1,100000),1),)”,这里的ROW函数是返回引用的行号,IF函数是判断与指定成员的姓名是否相同,SMALL函数可以返回数据组中第k个最小值,最后使用INDEX函数返回行列交叉处单元格的值或引用,按下“Ctrl+Shift+Enter”组合键转换为数组公式,向下拖曳填充柄,很快就可以看到如图2所示的查询效果。
有时,可能会出现无效查询的情况,此时可以显示为“无此人”等信息,只要将公式更换为“=IFERROR(INDEX($A$2:$A$15,SMALL(IF($C$2:$K$15=$A20,ROW($A$2:$A$15)-1,100000),1),),"無此人")”就可以了,这里是将“$C$2:$K$15”每一行的每个数据与$A$20进行比较,相同的就给行号“ROW($A$2:$A$15)”减去1,接下来再用SMALL函数得到唯一的行号,最终效果如图3所示。
选择B20单元格,在编辑栏输入公式“=INDEX($A$2:$A$15,SMALL(IF($C$2:$K$15=$A20,ROW($A$2:$A$15)-1,100000),1),)”,这里的ROW函数是返回引用的行号,IF函数是判断与指定成员的姓名是否相同,SMALL函数可以返回数据组中第k个最小值,最后使用INDEX函数返回行列交叉处单元格的值或引用,按下“Ctrl+Shift+Enter”组合键转换为数组公式,向下拖曳填充柄,很快就可以看到如图2所示的查询效果。
有时,可能会出现无效查询的情况,此时可以显示为“无此人”等信息,只要将公式更换为“=IFERROR(INDEX($A$2:$A$15,SMALL(IF($C$2:$K$15=$A20,ROW($A$2:$A$15)-1,100000),1),),"無此人")”就可以了,这里是将“$C$2:$K$15”每一行的每个数据与$A$20进行比较,相同的就给行号“ROW($A$2:$A$15)”减去1,接下来再用SMALL函数得到唯一的行号,最终效果如图3所示。