excel满足条件求和
终于做出来了。。初步的,有小bug,结尾最后一个数会出问题,涂黄的地方注意一下下面会说
先说公式
1.添加辅助列K,K列公式
K2手动输入1,K3开始=IF(H3*H2<0,1,0),往下拉
表示从本行开始,如果H行数据和上一行的符号不同,输出1,否则输出0
2.M列公式,如果K列中对应数据是1,即H列涨跌幅发生变号,查找下一次变号的位置离本次变号有多远,计算出连续不变号的天数
M2公式 =IF(K2=1,MATCH(1,OFFSET(K3,0,0,10000,1),0),""),往下拉
3.L列和N列:当M不为空时,表示需要计算本段时间的总涨跌幅和F的积累量
L2公式 =IF(M2<>"",SUM(OFFSET(H2,,,M2,)),"")
N2公式 =IF(M2<>"",SUM(OFFSET(F2,,,M2,)),"")
分别往下拉 ok
——————————
再说存在的和可能存在的bug,
1.因为k列计算的是本行涨跌幅数据和上一行数据的乘积,对于第一个数据,不存在前一行的数据,会出错。解决方法是K2手动输入1,表示本行需要计算,这个前面已经提到了。
2.M列因为是用match查找下一次出现变号的位置,对于结尾处,不存在下一次变号位置,所以会找不到,显示NA。
解决方法一是修改公式,用if分情况在讨论一下,我太懒了实在不想改了。现在这种公式也便于理解,你要是有兴趣的话就自己改一下。。。
解决方法二是最后一个手动算一下加进去,比如在M15中手动输入2表示连续两天,L和N会自动计算。
3.M列中给出的查找范围是K列10000行中会发生变号,对于极端情况,10000天连续涨或者连续跌的就会发生错误,虽然这种情况好像不会发生。。
目前差不多就这样。