您的位置:首页 > 其它

EXCEL公式应用:多条件求和,数组公式应用2

2005-12-30 13:10 190 查看
http://community.csdn.net/Expert/TopicView1.asp?id=4488494
最近老毛病又犯,老是不仔细看题目……
CSDN - 专家门诊 -

主  题:
关于两个条件AND 求和的问题

作  者:zhuluzy (逐鹿)
信 誉 值:100
所属论坛:Windows专区 Office使用
问题点数:100
回复次数:13
发表时间:2005-12-29 13:51:46
例如下面的例子,        
    |   A      B        C      D
_____________________________________    
 1  |   a1     10        a1    nm
 2  |   b2     10        c3    nm
 3  |   c3     10              nf
 4  |   a1     10              nf
 5  |   a1     10              nf
 6  |   b2     10              nf
 7  |   a1     10              nm
 

问:A列中的值存在于C 列,同时(并且-and),D列,必须等于 nm 的数据对 B列求和
    使用什么样的方法??

  两个条件单独求和都可以实现
              条件1:  sum(sumif(a1:a7,c1:c2,b1:b7))
              条件2:  sumif(d1:d7,="nm",b1:b7)          
 但是2个条件都满足的行进行求和如何实现呢? 最终结果应该是20

回复人: scz123(小章) ( ) 信誉:124 2005-12-29 15:06:52 得分:0
{=SUM(SUMIF(A1:A7,C1:C7&(IF(D1:D7="mn","","a")),B1:B7))}

Top
回复人: zhuluzy(逐鹿) ( ) 信誉:100 2005-12-29 16:01:33 得分:0
我试了一下,这样写是不正确的,但这种思路,我受教了,谢谢!

错误原因是:
           C1:C7&(IF(D1:D7="mn","","a") 虽然将C列,按照D列整理成为了一个条件范围,
但是对于A列满足条件1但是重复的值,不论是否满足条件2,都会被求和
因为A列是重复的,而C列并不是和A列一一对应(C列是不重复的)所以这样写是不正确的

Top
回复人: scz123(小章) ( ) 信誉:124 2005-12-29 16:03:46 得分:0
哦,楼主的是nm别弄错了
{=SUM(SUMIF(A1:A7,C1:C7&(IF(D1:D7="nm","","a")),B1:B7))}

Top
回复人: scz123(小章) ( ) 信誉:124 2005-12-29 16:09:44 得分:0
哦,理解有误,再考虑一下

Top
回复人: zhuluzy(逐鹿) ( ) 信誉:100 2005-12-29 16:37:58 得分:0
我使用如下思路(利用了空列F),其中借用了小章的思路,我认为肯定可以,但好像还是不成功!!!!    郁闷中......

=SUM((d1:d7="nm")*(a1:a7=c1:c7&if(d1:d7="nm",a1,"")*D2:D11)

Top
回复人: scz123(小章) ( ) 信誉:124 2005-12-29 16:38:08 得分:0
{=SUM(IF(D1:D7="nm",IF(NOT(ISNA(MATCH(C1:C7,A1:A7,0))),B1:B7,0),0))}
有点复杂,呵呵
还有问题的话,发给消息给我,明天继续

Top
回复人: scz123(小章) ( ) 信誉:124 2005-12-29 16:43:39 得分:0
{=SUM((D1:D7="nm")*NOT(ISNA(MATCH(C1:C7,A1:A7,0)))*(B1:B7))}
这样也行

Top
回复人: Yiqun_Zhao(蓝帆·雨轩 Mail: yiqun_zhao@163.com) ( ) 信誉:133 2005-12-30 08:11:00 得分:0
这个很简单的:

在编辑栏输入如下公式:

=SUM(IF(($A$1:$A$7=$C$1)*($D$1:$D$7="nm"),$B$1:$B$7))

同时按下Ctrl+Shift+Enter已完成公式,公式在编辑栏的表现形式为:

{=SUM(IF(($A$1:$A$7=$C$1)*($D$1:$D$7="nm"),$B$1:$B$7))}

结果:20

Top
回复人: Yiqun_Zhao(蓝帆·雨轩 Mail: yiqun_zhao@163.com) ( ) 信誉:133 2005-12-30 08:17:00 得分:0
友情提示:
scz123(小章):您的公式有误,原因如下:
虽然您的公式可以得到正确答案20,可是您在得到答案后,将A列为a1的对应行的D列中的nf改为nm,您的公式产生的答案依然是20(而不是30),所以您的公式是存在问题的!

参考公式如下:
{=SUM(IF(($A$1:$A$7=$C$1)*($D$1:$D$7="nm"),$B$1:$B$7))}

Top
回复人: scz123(小章) ( ) 信誉:124 2005-12-30 08:33:00 得分:0
不会吧?
 Yiqun_Zhao 的意思是把d4改成nm吧,但c4值是空的,总的有效行只有2行(1、2行),所以结果应该是20,符合楼主的意思

将A列为a1的对应行的D列中的nf改为nm,公式产生的答案依然是20的原因是 C列只有两个有效值

{=SUM((D1:D7="nm")*NOT(ISNA(MATCH(C1:C7,A1:A7,0)))*(B1:B7))}
D1:D7="nm": D列必须等于nm
NOT(ISNA(MATCH(C1:C7,A1:A7,0))): C列值必须在A列中存在
按楼主的意思,应该是没问题了

公式 {=SUM(IF(($A$1:$A$7=$C$1)*($D$1:$D$7="nm"),$B$1:$B$7))}
应该只符合A列等于a1($C$1),D列等于nm的求和,对应行1、7,可能和楼主的意思不一样了

Top
回复人: Yiqun_Zhao(蓝帆·雨轩 Mail: yiqun_zhao@163.com) ( ) 信誉:133 2005-12-30 11:01:00 得分:0
scz123(小章):
如题,A列中的值存在于C列:
表明的是A列中的值在C列中存在,而不是相反的C列中的值在A列中存在。也就是表明C列只是起到一个对A列筛选的作用,C列是否有空值没有关系。呵呵。

如果是要C列中的值在A列中要存在,那么是按照您的思路做!

Top
回复人: scz123(小章) ( ) 信誉:124 2005-12-30 12:50:00 得分:0
哦,原来还是我看错了,哎,老毛病又犯了,总是不仔细看题目,呵呵,见笑见笑

Top
回复人: scz123(小章) ( ) 信誉:124 2005-12-30 13:04:00 得分:0
那这样应该就对了
{=SUM((D1:D7="nm")*NOT(ISNA(MATCH(A1:A7,C1:C2,0)))*(B1:B7))}

公式{=SUM(IF(($A$1:$A$7=$C$1)*($D$1:$D$7="nm"),$B$1:$B$7))}还没考虑到C列的其它值

Top
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: