=MMULT(SUMIF(OFFSET(B7,,COUNTIF(OFFSET(D11:D16,{0,6,12},),">"&SUMIF(OFFSET(C11:C16,{0,6,12},),G18:G23,OFFSET(D11:D16,{0,6,12},))),,COUNTIF(OFFSET(D11:D16,{0,6,12},),SUMIF(OFFSET(C11:C16,{0,6,12},),G18:G23,OFFSET(D11:D16,{0,6,12},)))),"<>")/COUNTIF(OFFSET(D11:D16,{0,6,12},),SUMIF(OFFSET(C11:C16,{0,6,12},),G18:G23,OFFSET(D11:D16,{0,6,12},))),{1;1;1})
思路:
蓝色部分求出在同一项目中,各成员得分大于某成员得分的个数(得到右偏移量);
黄色部分求出在同一项目中,各成员得分等于某成员得分的个数(得到数据宽度);
然后使用sumif得到该项目中某分数的总得分,再除以对应个数(得到各成员各项目明细得分);
最后mmult得到各成员总分。
问题:
对黄色或蓝色部分分别定义名称,可以;对其中的OFFSET(D11:D16,{0,6,12},)、OFFSET(C11:C16,{0,6,12},)分别定义名称后就不可以了[em06]。以前没注意过,请版主指正。
Gdliyy注: 总体思路很清晰,使用了Countif\Sumif的三维引用来实现,我们还可以用Rank()来实现排名,Sutotal来实现平均(代替Sumif()/Countif()),呵呵。。。我的解法中几乎所有三维引用的函数都用到了。结果正确,评分3分。
另外,你说的名称一事儿,我测试一下再说,可能是Sumif()的问题:)
[此贴子已经被gdliyy于2006-3-23 0:01:26编辑过] |