首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 办公应用 > OFFICE教程 >

EXCEL的一个计算有关问题

2012-01-28 
EXCEL的一个计算问题请问我想将一表格内满足两个字段条件的数量合计,以前有用过不过已忘记了,请有知道的朋

EXCEL的一个计算问题
请问我想将一表格内满足两个字段条件的数量合计,以前有用过不过已忘记了,请有知道的朋友赐教,谢谢!
比如
字段A           字段B         字段C
A01               T131             100
A01               T132             500  
A02               T131             620
A01               T131             360


我是想在另一个地方做个汇总表格如出现
A01           T131           460

谢谢!

[解决办法]
用SUMPRODUCT函数最实用,可以实现多条件求和,计数等.
=SUMPRODUCT((A:A=A01)*(B:B=T131)*(C:C))
A 'B列是条件,还可以继续增加的,如果为真,结果为1,假为0,这样通过相乘实现条件判断,然后对符合条件的C列进行合计.


给分,不明的PM偶.
[解决办法]
序号产品编号生产日期产品单价产品数量
1AA2000-6-151 100多条件合计是个很“古老”的题目。
2AA2000-6-201125如左侧的数据表。要求出产品 "BB "的8月份总数量。
3BB2000-6-302150
4BB2000-7-102 175常用的解法是SUM数组:{=SUM(条件1*条件2*数据)} 【见C22公式】
5CC2000-7-153200后来又有了一种不需要按三键的公式:
6CC2000-7-203225 =SUMPRODUCT(条件1*条件2*数据) 【见C23公式】
7AA2000-7-301250 这两种做法从本质上来说,没有根本的差别。都是数组相乘并求和。
8AA2000-8-101275
9BB2000-8-152300最近,gouweicao78版主提出了一个内存数组的做法:
10BB2000-8-202325利用MMULT矩阵函数,采用矩阵乘法,得到条件求和的内存数组。
11CC2000-8-303350【见C24公式】
12CC2000-10-103375
13DD2000-10-154400关于MMULT函数,参见山菊花版主的:《初识MMULT》
14DD2000-10-304425
注:例子引自Erase2000版主《骗你爱上数组公式》

条件结果

产品月份数量
BB8625{=SUM((B3:B16=A22)*(MONTH(C3:C16)=B22)*E3:E16)}
625 =SUMPRODUCT((B3:B16=A22)*(MONTH(C3:C16)=B22)*E3:E16)
625{=MMULT(--(A22=TRANSPOSE(B3:B16)),(MONTH(C3:C16)=B22)*E3:E16)}

在前面两个公式中,条件1、条件2、数据三者的顺序没有限制。但MMULT函数却不同。
条件1、条件2和数据三者哪个作为MMULT的第一或第二参数是有限制的。
本题的结果是一行一列的数组。根据MMULT的特性,MMULT的第一参数应为一行N列,而第二参数应为N行一列,并且均为数值
C24公式中,A24=TRANSPOSE(B6:B19)是一个一行14列的数组,前面加上--()就使它变成了数值:{0,0,1,1,0,0,0,0,1,1,0,0,0,0}
(MONTH(C6:C19)=B24)*E6:E19则是一个14行一列的数组:{0;0;0;0;0;0;0;275;300;325;350;0;0;0}
两个数组做矩阵相乘后,就得到了最终的结果:625(一行一列数组)

明白了上面的原理,我们就知道:只要注意到MMULT的特性,条件和数据的位置也是可以灵活变化的。
比如,可以把公式写成:MMULT(条件2,条件1*数据)
即:{=MMULT(--(B22=TRANSPOSE(MONTH(C3:C16))),(A22=B3:B16)*E3:E16))
也可以写成:MMULT(条件2*条件1,数据)
即:{=MMULT((A22=TRANSPOSE(B3:B16))*(B22=TRANSPOSE(MONTH(C3:C16))),E3:E16)}
甚至还可以写成:MMULT(条件1*条件2*数据,标准矩阵)
即:{=MMULT((A22=TRANSPOSE(B3:B16))*(B22=TRANSPOSE(MONTH(C3:C16)))*TRANSPOSE(E3:E16),ROW(B3:B16)^0)}

热点排行