+ -
当前位置:首页 → 问答吧 → 请教各位老师

请教各位老师

时间:2011-08-03

来源:互联网

有一个数组公式:
{=SUM(SUMIF(B2:B10,"<="&{1000,2000}*{-1,1}))},计算的结果不对,,"<="&{1000,2000}*{-1,1}是大于等于1000,小于等于2000的意思吗?如果不是,哪大于等于1000,小于等于2000是如何用数组表示呀?

作者: czh1121   发布时间: 2011-08-03

{=SUM(SUMIF(B2:B10,"<="&{1000,2000}*{-1,1}))},

  这个公式所求的值是 等于或小于2000,  同时 大于1000 的和

   表示式为  2000>=X>1000

作者: 正弋老兵   发布时间: 2011-08-03

这个 公式还真的没怎么见过。。

作者: kakaco   发布时间: 2011-08-03

老兵老师,可计算的结果不是这样的,结果不正确的.

作者: czh1121   发布时间: 2011-08-03

=SUM(SUMIF(B2:B10,{">=1000",">2000"})*{1,-1})

作者: 249282042   发布时间: 2011-08-03

这种公式我就从来没看懂过。

用sumproduct不是挺好吗。

作者: 魂断蓝桥   发布时间: 2011-08-03

=sum(sumif(B2:B10,">="{1,2}*1000)*{1,-1})

作者: hopeson2010   发布时间: 2011-08-03

引用:
原帖由 czh1121 于 2011-8-3 14:37 发表
老兵老师,可计算的结果不是这样的,结果不正确的.
{=SUM(SUMIF(B2:B10,"<="&{1000,2000}*{-1,1}))}可以这样解读:
1、{1000,2000}*{-1,1}——得到{-1000,2000}
2、SUMIF(B2:B10,"<="&{-1000,2000})——求得两组数:SUMIF(B2:B10,"<="&-1000)、SUMIF(B2:B10,"<="&2000),一组结果是B2:B10中小于等于-1000的各数之和(负数),一组是B2:B10中小于等于2000的各数之和。
3、SUM(SUMIF(B2:B10,"<="&{1000,2000}*{-1,1}))——这样就相当于SUM(SUMIF(SUMIF(B2:B10,"<="&-1000),SUMIF(B2:B10,"<="&2000))),即把两组结果相加:如果B2:B10中有小于-1000的则是B2:B10中所有小于等于2000的和再加上小于等于-1000的和,如果没有小于-1000的话,则仅是B2:B10中小于等于2000的所有数值之和。
楼主要求求出大于等于1000,小于等于2000的值,则=SUM(SUMIF(B2:B10,{">=1000",">2000"})*{1,-1})应该是正确的:先求出两组:大于等于1000的和大于2000的,再把前者减去后者。
也可以用=SUMPRODUCT(($B$2:$B$10>=1000)*($B$2:$B$10<=2000)*$B$2:$B$10)
至于老兵老师说的,大于1000,小于等于2000的公式应该是=SUM(SUMIF(B2:B10,"<="&{1000,2000})*{-1,1})——小于等于2000一组之和的减去(即加上负的)小于等于1000一组之和,仔细看,与楼主公式公式相比较,右括弧的位置不同。
而周老师的=SUM(SUMIF(B2:B10,">="&{1,2}*1000)*{1,-1})则是求出大于等于1000,小于2000的和。

作者: wangjguo44   发布时间: 2011-08-03