I need to filter for each of the products, which are the distances that are profitable using them.
In the example below, using car the profitable distance is 3 and skate the profitable distances are 3 and 5:
| product (column A) | distance (column B) | profit/loss (column C) |
|---|---|---|
| car | 3 | -1 |
| skate | 5 | 1 |
| skate | 7 | 2 |
| car | 7 | -1 |
| skate | 7 | -3 |
| car | 3 | 3 |
| skate | 5 | -4 |
| skate | 5 | 6 |
| skate | 3 | 2 |
So the result I would like to get would be this:
| options (column E) | distances (column F) |
|---|---|
| car | 3 |
| skate | 3,5 |
Column E:
=UNIQUE(A1:A)
Column F:
=ARRAYFORMULA(IF(E1:E="","",JOIN(",",FILTER(UNIQUE(B1:B),SUMIFS(C1:C,A1:A,E1:E,B1:B,UNIQUE(B1:B))))))
I tried to use FILTER and combine with SUMIFS, but it generated error in divergent size ranges.
I would like to know if there is any way I can make this filter somehow for each of the objects and that I have the freedom to increase the number of products according to the time (that's why I combined it with ARRAYFORMULA, so I don't get stuck adding line-by-line formulas)
Edit 1:
Why 7 is not included in Profit for Skate:
Because at distance 7, we have the values 2 and -3, so it becomes a return -1
Edit 2:
Why 3,5 in Profit for Skate:
Because at distance 3, we have the value 2, so it becomes a return 2
Because at distance 5, we have the values 1, -4 and 6, so it becomes a return 3
CodePudding user response:
try:
=INDEX(REGEXREPLACE(TRIM(SPLIT(FLATTEN(QUERY(QUERY(
QUERY({A2:A&"", B2:B&",", C2:C}, "select Col1,Col2,sum(Col3) group by Col1,Col2"),
"select max(Col2) where Col3 >0 group by Col2 pivot Col1"),,9^9)), "")), ",$", ))

