=INDEX(
INDEX(INDEX($B$3:$D$13,N(IF(1,ROUNDUP(ROW($1:$31)/3,))),N(IF(1,MOD(ROW($1:$31)-1,3)+1))),N(IF(1,SMALL(IF(MATCH(INDEX($B$3:$D$12,N(IF(1,ROUNDUP(ROW($1:$30)/3,))),N(IF(1,MOD(ROW($1:$30)-1,3)+1))),INDEX($B$3:$D$12,N(IF(1,ROUNDUP(ROW($1:$30)/3,))),N(IF(1,MOD(ROW($1:$30)-1,3)+1))),)=ROW(1:30),ROW(1:30),31),ROW(1:30))))),
RIGHT(LARGE(MMULT(TRANSPOSE(ROW(1:30)^0),N(INDEX(IF(IF(MMULT(N(B3:D12=B15),{1;1;1}),B3:D12,ROW(1:10)*40+COLUMN(A:C))=B15,4^8,IF(MMULT(N(B3:D12=B15),{1;1;1}),B3:D12,ROW(1:10)*40+COLUMN(A:C))),N(IF(1,ROUNDUP(ROW($1:$30)/3,))),N(IF(1,MOD(ROW($1:$30)-1,3)+1)))=TRANSPOSE(INDEX(INDEX($B$3:$D$13,N(IF(1,ROUNDUP(ROW($1:$31)/3,))),N(IF(1,MOD(ROW($1:$31)-1,3)+1))),N(IF(1,SMALL(IF(MATCH(INDEX($B$3:$D$12,N(IF(1,ROUNDUP(ROW($1:$30)/3,))),N(IF(1,MOD(ROW($1:$30)-1,3)+1))),INDEX($B$3:$D$12,N(IF(1,ROUNDUP(ROW($1:$30)/3,))),N(IF(1,MOD(ROW($1:$30)-1,3)+1))),)=ROW(1:30),ROW(1:30),31),ROW(1:30))))))))+COLUMN(A:AD)%,1),2)*1)&""
王五为名称引用。超长公式,嘿。10版本。
思路:
1.将区域中符合条件值找出,同时构建一个虚拟的数据填充,方便下面引用,如:=IF(MMULT(N(B3:D12="王五"),{1;1;1}),B3:D12,ROW(1:10)*3-3+COLUMN(A:C))
2.去除区域中B3:D13的重复值,并以1维的形式存储。
3.步骤1中的区域与步骤2中的非重复值构建查找对应重复出现最多的值
4.以步骤2中的区域进行查找匹配步骤3所返回的第二大值。
利用INDEX+N+IF返回内存数组区域,解题中的思路较为原始,没有技巧性。
[ 本帖最后由 aa7701914 于 2011-6-13 22:07 编辑 ] |