我以前在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行的表格,因此效率很重要。
有人可以帮我解决这个问题吗?
答案 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.
中设置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)
但这可能比上面的公式更挑剔。