Forum Discussion
Solution for COUNTIFS
Hi,
I am trying to achieve a simple COUNTIFS solution in Power BI. I have read multiple messages but none of them are working out for me. I am trying to add a new column in my table and calculate the following:
COUNTIFS($A:$A,A3,$B:$B,B3,$C:$C,C3)
| Col A | Col B | Col C | Col D |
| Team Name | Week# | Year | Count IF |
| ABC1 | 15 | 2016-17 | 2 |
| ABC1 | 15 | 2016-17 | 2 |
| ABC2 | 15 | 2016-17 | 3 |
| ABC2 | 15 | 2016-17 | 3 |
| ABC2 | 15 | 2016-17 | 3 |
| ABC3 | 15 | 2016-17 | 3 |
| ABC3 | 15 | 2016-17 | 3 |
| ABC3 | 15 | 2016-17 | 3 |
| ABC4 | 15 | 2016-17 | 3 |
| ABC4 | 15 | 2016-17 | 3 |
| ABC4 | 15 | 2016-17 | 3 |
| ABC5 | 15 | 2016-17 | 3 |
| ABC5 | 15 | 2016-17 | 3 |
| ABC5 | 15 | 2016-17 | 3 |
| ABC6 | 15 | 2016-17 | 3 |
| ABC6 | 15 | 2016-17 | 3 |
| ABC6 | 15 | 2016-17 | 3 |
| ABC1 | 16 | 2016-17 | 3 |
| ABC1 | 16 | 2016-17 | 3 |
| ABC1 | 16 | 2016-17 | 3 |
| ABC2 | 16 | 2016-17 | 3 |
| ABC2 | 16 | 2016-17 | 3 |
| ABC2 | 16 | 2016-17 | 3 |
| ABC3 | 16 | 2016-17 | 3 |
| ABC3 | 16 | 2016-17 | 3 |
| ABC3 | 16 | 2016-17 | 3 |
| ABC4 | 16 | 2016-17 | 3 |
| ABC4 | 16 | 2016-17 | 3 |
| ABC4 | 16 | 2016-17 | 3 |
| ABC5 | 16 | 2016-17 | 3 |
| ABC5 | 16 | 2016-17 | 3 |
| ABC5 | 16 | 2016-17 | 3 |
| ABC6 | 16 | 2016-17 | 3 |
| ABC6 | 16 | 2016-17 | 3 |
| ABC6 | 16 | 2016-17 | 3 |
I do not wish to create a new measure as I have to use this column to calculate another one.
Please give this a try:
Column D =
CALCULATE (
COUNTROWS ( 'TableName' ),
ALLEXCEPT (
'TableName',
'TableName'[Team Name],
'TableName'[Week #],
'TableName'[Year]
)
)Hi ShrikantKhanna,
You can use EARLIER function when you create calculated column. I used FILTER(Table5,Table5[Team Name]=EARLIER(Table5[Team Name])), which mean it will return the subtable with same Team name. Filter is compared to the criteria. Then I add multiple filters, so the formula will count [Team Name] where satisfy Filter1, Filter2, Filter3 and so on.Result = CALCULATE(COUNTA(Table5[Team Name]),FILTER(Table5,Table5[Team Name]=EARLIER(Table5[Team Name])),FILTER(Table5,Table5[Week#]=EARLIER(Table5[Week#])),FILTER(Table5,Table5[Year]=EARLIER(Table5[Year])))
Please review expected result in the following screenshot.If you have other issues, please feel free to ask.
Best Regards,
Angelia
10 Replies
- MattAllingtonCommunity Champion
What can't you use a measure to calculate another measure? Why does it have to be a column?
- ShrikantKhannaHelper II
Hi Matt,
My main objective is to apply target for each team per week as it changes every week. I am able to use LOOKUPVALUE to call the taget in the main table, however, target is appearing for each row the team/Week#/Year combination appears. Like, ABC1, week 15, Year 2016-17 appears twice - the target appears twice. So, I am thinking to break down target by using this COUNTIFS to get weighted target per row and them SUM it for the Team Name, Region Name (for respective team names) and then overall, all in the main table.
I have tried to house targets in a separate table with one to many relationship, however, one of the slicer in the report (created from the main table) for "this Week", "Last Week" is not calling in the correct values. So, I thought of weightage calculation.
Please let me know your thoughts.
Thanks.
- v-huizhn-msftMicrosoft Employee
Hi ShrikantKhanna,
You can use EARLIER function when you create calculated column. I used FILTER(Table5,Table5[Team Name]=EARLIER(Table5[Team Name])), which mean it will return the subtable with same Team name. Filter is compared to the criteria. Then I add multiple filters, so the formula will count [Team Name] where satisfy Filter1, Filter2, Filter3 and so on.Result = CALCULATE(COUNTA(Table5[Team Name]),FILTER(Table5,Table5[Team Name]=EARLIER(Table5[Team Name])),FILTER(Table5,Table5[Week#]=EARLIER(Table5[Week#])),FILTER(Table5,Table5[Year]=EARLIER(Table5[Year])))
Please review expected result in the following screenshot.If you have other issues, please feel free to ask.
Best Regards,
Angelia
- AmratyaAdvocate I
Please give this a try:
Column D =
CALCULATE (
COUNTROWS ( 'TableName' ),
ALLEXCEPT (
'TableName',
'TableName'[Team Name],
'TableName'[Week #],
'TableName'[Year]
)
)