|
楼主 |
发表于 2008-11-19 21:17
|
显示全部楼层
一楼我所说的“本题取材于论坛的一个实例”,源自于网友xiebogen
求助贴:http://club.excelhome.net/thread-360596-2-1.html
本题主要解法:“3M”解法和“MSO”解法、“MO”解法
1.“3M”解法,所谓“3M”,顾名思义为主要由 mmult + mmult + mmult 3个mmult架构成的连环解法,公式如下:
=MMULT(MMULT(N(TRANSPOSE(计划!A2:A6)=A2:A6),计划!B2:F6),MMULT(N(TRANSPOSE(用量表!A2:A18=计划!B1:F1)),(用量表!B2:B18=B1:E1)*用量表!C2:C18))
或
=MMULT(MMULT(MMULT(N(A2:A6=TRANSPOSE(计划!A2:A6)),计划!B2:F6),TRANSPOSE(N(计划!B1:F1=用量表!A2:A18))),(B1:E1=用量表!B2:B18)*用量表!C2:C18)
如5楼micohui、6楼huisiming、7楼yoka版主或9楼lws版主等的公式都属典型的“3M”解法代表,思路大同小异,
2.“MSO”解法,所谓“MSO”,顾名思义为由 mmult + sumif + offset 架构成的解法,公式如下:
=MMULT(SUMIF(计划!B1:F1,TRANSPOSE(用量表!A2:A18),OFFSET(计划!B1,MATCH(A2:A6,计划!A2:A6,),)),(用量表!B2:B18=B1:E1)*用量表!C2:C18)
只有20楼willin2000版主运用了此解法,我的解法是
=MMULT(TRANSPOSE(SUMIF(计划!1:1,用量表!A2:A18,OFFSET(计划!A1,TRANSPOSE(MATCH(A2:A6,计划!A2:A6,)),))*用量表!C2:C18),N(用量表!B2:B18=B1:E1))
3.“MO”解法,所谓“MO”,顾名思义为由 mmult + offset 架构成的解法,公式如下:
=MMULT(N(OFFSET(计划!A1,MATCH(A2:A6,计划!A2:A6,),TRANSPOSE(MATCH(用量表!A2:A18,计划!B1:F1,)))),用量表!C2:C18*(用量表!B2:B18=B1:E1))
这是12楼shaowu459为我们提供了第三种思路的解法,充分运用OFFSET的第2参数[rows]、第3参数[cols],具有相当的灵活性
本期函数竞赛题的关键不在公式,而在于解题思路,思路决定公式。本题要求用内存数组解题,因此涉及“三表连轴转”的情形,所以在解题过程中容易迷失方向,乱了阵脚。
谢谢所有参与、关注、支持此期竞赛活动的会员朋友们! |
|