2016-05-27 4 views
0

Я привык использовать некоторые формулы матрицы в excel, но я не в состоянии решить эту проблему.SUMIF со сложными условиями с использованием матрицы

Я работаю с базой данных о фирмах расходов на людские ресурсы, структурирована со следующими столбцами:

[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

Используйте формулу массива, как это:

=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)) 

Это исключит любой сотрудник, который был заложен не в указанном месяце.

Будучи формулой массива, ее необходимо подтвердить с помощью Ctrl-Shift-Enter. Если все сделано правильно, то excel поместит {} вокруг формулы.

enter image description here

Только для FYI, общая сумма заработной платы, если Джордж включают бы 11550.


EDIT

Это также может быть сделано с 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) 

Но это может быть немного более сложным, чем приведенная выше формула.

Смежные вопросы