|
总结:
各位朋友晚上好,因为题目较为容易,可能很多大佬都没有答题,我在这里感谢几位大佬的参与,特别是爱上李白爱上伤跟奇文说大佬完整的回答了三题,现在,我就三题进行逐一的分析。希望可以更好的帮助到新学习median的朋友们。
一、第一题,预设
=(D2%>=5+(C2<"主")*3)*MEDIAN((6-(C2<"主"))*D2%,50,150)*2
第一题各位大佬的答案都差不多,可以参考大家的。首先(D2%>=5+(C2<"主")*3)这一部分,这一部分是判断是否符合奖励要求,如果不是大于等于,则返回0,则没有奖励。 接着是MEDIAN((6-(C2<"主"))*D2%,50,150)*2是这一部分,按照最低100,最高300,用MEDIAN函数来取中间值,如果是低于100,则取100,如果是高于300,则取300,如果是中间值,就取中间值。应是较为容易的。
二、第二题,预设
=MEDIAN(SUM(C$2:D2*(B$2:B2&INT(C$2:C2)=B2&INT(C2))*{-1,1})-5/24,D2-C2,)*2400
第二题爱上李白爱上伤跟奇文说大佬的都差不多,可以参考。
对于这种跟某一固定值来做差再求中位数的问题我们可以根据上面2个图来加以理解。
1.首先是第一种,如果前面部分没有5那么多,那么与5做差肯定是负数,那么负数,0,跟正值的中位数就是0.
继续增加数值,刚好到5,那么做差就是0,0,正数,返回0,说明总体还是小于等于5的。
再接下来再增加数值,那么与5只差就大于0了,此时0,正数,正数,就返回了多出的部分。
接下来再增加数值,此时增加的数值就小于多于5的部分了,这个时候0,较小的正数,多于5的部分,就返回了新增的数值了。
2.第二种是第二部分加上去大于5了,此时多于5的部分与0,新增的数值之间就会返回多余5的部分了,接下来再新增数值就会变成第一种情况了。
综合来说还是较为容易理解的。
三、第三题,预设
=MEDIAN(,D2,SUMIFS(D:D,C:C,C2,B:B,B2)-SUM((B3:B32=B2)*(C3:C32=C2)*(D2*D3:D32>0)*D3:D32))
第三题爱上李白爱上伤朋友的容易理解,但稍显长了点,奇文说大佬的公式就与预设一样,可以参考。
我在这里对此简要分析分析。
分情况讨论:
1.若左侧单元格为正数,那么我们可以先求出至此单元格上面的所有正数之和
怎么求呢?就是所有正数之和减去下方单元格的所有正数之和
接着就是跟所有负数之和做比较,如果是正数,返回较为小的整数,如果是负数,说明抵消完了,返回0 其实SUMIFS(D:D,C:C,C2,B:B,B2)-SUM((B3:B32=B2)*(C3:C32=C2)*(D2*D3:D32>0)*D3:D32)这一部分公式由
2部分组成
第一个部分是:SUMIFS(D:D,C:C,C2,B:B,B2,D:D,">0")
第二个部分是:SUM((B3:B32=B2)*(C3:C32=C2)*(D2*D3:D32>0)*D3:D32)
第三部分是SUMIFS(D:D,C:C,C2,B:B,B2,D:D,"<0")
其中1,3合并就是SUMIFS(D:D,C:C,C2,B:B,B2)
2.若左侧单元格为负数,那么我们的求法就跟上面的原理是一模一样的。
在这里,我要再推荐一下丢丢表格大佬的倒算法,更加容易理解
=MEDIAN(SUMIFS(D:D,B:B,B2,C:C,C2)-SUMIFS(E3:E69,B3:B69,B2,C3:C69,C2),D2,)
我在这里简要的跟大家分析一下计算原理,也是非常简单的。
首先,大家要明白一个原理,就是抵消是自上而下去抵消的,这对于理解这个公式很关键。
SUMIFS(D:D,B:B,B2,C:C,C2)
这一部分,我们直接求出最终抵消的是正值还是负值
那么如果是正值,那么上方的负值都是0,
如果是负值,那么上方的正值都是0.
关键在于如果是正值,那么上方的正值如何去取值。
我们举个例子
例如一个人最终抵消金额是100元,此时最下方的单元格的正数是80元,说明什么?
说明上方的正数和抵消后还有剩余,根本用不到80这一部分来抵消,所以80保留。
再上一个正数单元格是18的话,那么100减去80后还有20,那么说明也不用18来抵消,上面抵消后还有2剩余
如果上一个正数单元格是22的话,那么说明抵消已经抵消到22这里来了,抵消了2
那么就返回20
再上方的单元格已经抵消完了,所有正数就返回了0.
那么负数也是这个道理。
总的来说也是很容易理解的 |
|