使用Matrix的复杂条件的SUMIF

时间:2016-05-27 14:08:53

标签: excel excel-formula

我以前在Excel中使用了一些矩阵公式,但我无法解决这个问题。

我正在使用一个数据库来处理公司人力资源支出,该数据库的结构如下:

[Month] / [Type_Of_Expenditures] / [Employee_Name] / [Value]

在这种结构中,员工可能在一个月内出现许多不同的时间(在许多不同的行上),因为他收到了不同类型的付款,例如工资,福利等。

公司可以与雇主一起支付的一种费用是裁员。每次员工被解雇时,都会显示一行[@Type_Of_Expenditures]="Lay_Off",并且[@Value]

上会显示解雇该员工的费用

我要做的是以下内容:我想总结一个月的总费用,只考虑那些没有被解雇的员工。但我的问题是:如果雇主"Ana"在那个月被解雇,她不仅会收到"Lay_Off"费用,还会收取"Wage"等其他费用。所以我们可以拥有,例如:

[Month] // [Name] // [Type_of_expenditure] // [Value]
[...]
01/2016 // Ana // Lay_off // U$100 
01/2016 // Ana // Wage // U$400
[...]

我的问题是创建一个SUMIF结构,该结构将对所有[Values]的所有[Month]进行求和,但如果雇主因此而被解雇,则 总和月份,无论[Type_Of_Expedniture]是什么。在"Ana example"中,我不想总结上面描述的上线和下线。

更糟糕的是,我们谈论的是一张超过80,000行的表格,因此效率很重要。

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

Use an array formula like this:

=SUM(IF((MONTH(G1)=MONTH($A$2:$A$22))*(YEAR(G1)=YEAR($A$2:$A$22))*(B2:B22=G2)*ISERROR(MATCH($C$2:$C$22&"LAY_OFF",$C$2:$C$22&$B$2:$B$22,0)),$D$2:$D$22))

It will exclude any employee that was laid of in the specified month.

Being an array formula it must be confirmed with Ctrl-Shift-Enter. If done correctly then excel will put {} around the formula.

enter image description here

中设置href

仅供参考,如果包括乔治,总工资将是11550。

修改

这也可以通过SUMPRODUCT():

来完成
=SUMPRODUCT((MONTH(G1)=MONTH($A$2:$A$22))*(YEAR(G1)=YEAR($A$2:$A$22))*(B2:B22=G2)*ISERROR(MATCH($C$2:$C$22&"LAY_OFF",$C$2:$C$22&$B$2:$B$22,0)),$D$2:$D$22)

但这可能比上面的公式更挑剔。