Excel 与critiera聚合并在阵列中复制

Excel 与critiera聚合并在阵列中复制,excel,Excel,我有以下Excel电子表格: A B C D E 1 ProdID Price Unique ProdID 1. Biggest 2. Biggest 2 2606639 40 2606639 50 50 3 2606639

我有以下Excel电子表格:

      A            B               C               D              E
1   ProdID       Price       Unique ProdID     1. Biggest     2. Biggest
2   2606639       40            2606639           50            50         
3   2606639       50            4633523           45            35
4   2606639       20            3911436           25            25
5   2606639       50
6   4633523       45
7   4633523       20
8   4633523       35
9   3911436       20
10  3911436       25
11  3911436       25
12  3911436       15
在单元格D2:E4中,我想显示1。最大和2。列A中每个产品的最大价格。因此,我使用以下公式:

D2 =AGGREGAT(14,6,$B$2:$B$12/($A$2:$A$12=$C2),1)
E2 =AGGREGAT(14,6,$B$2:$B$12/($A$2:$A$12=$C2),2)
只要价格在第二个ProdID(4633523)中所示的列中是唯一的,此公式就有效

但是,一旦B列中的价格不是唯一的(例如,ProdID 26026639为50,ProdID 3911436为25),单元格D2:E4中的函数就不会显示正确的结果


您是否知道是否可以使用聚合公式并使用数组公式解决此问题?

您可以检查第一个ProdID价格组合的出现次数,并在聚合函数的最后一个参数中使用该次数。所以不是

=AGGREGAT(14,6,$B$2:$B$12/($A$2:$A$12=$C2),2)
你会的

=AGGREGAT(14,6,$B$2:$B$12/($A$2:$A$12=$C2),2+COUNTIFS(A:A,C2,B:B,D2)-1)

当然你可以把“1+COUNTIFS…”但我这样说是为了更好地理解,它使用位置2+ProdID组合的出现次数和第一次出现后的最大数量。

您可以检查第一个ProdID价格组合的出现次数,并在聚合函数的最后一个参数中使用它。所以不是

=AGGREGAT(14,6,$B$2:$B$12/($A$2:$A$12=$C2),2)
你会的

=AGGREGAT(14,6,$B$2:$B$12/($A$2:$A$12=$C2),2+COUNTIFS(A:A,C2,B:B,D2)-1)

当然,你可以把“1+COUNTIFS…”放在这里,但我这样说是为了更好地理解,它使用了ProdID组合的位置2+出现次数和第一次出现后的最大数。

嗨,帕维尔,好主意,但据我所知,只有当A列中的值正好存在两次时,这个解决方案才有效。但是,这些值也可能存在2次以上。例如,对于ProdID 2606639,可能会出现50的价格适用于所有3个ProdID,而不是仅适用于2个。最后的列表将经常更改,因此不能保证它与我发布的示例中的值保持相同。不完全是两次。你可以把同一个ProdID的任意多行,这将给你第二高的唯一价格。但是是的,如果给定的ProdID只有一个唯一的价格,那么它将导致错误,这在本质上是正确的,因为没有第二大数字。但这可能是我误解了-如果ID只有一个唯一的价格,您希望它做什么?嗨,Pavel,好主意,但据我所知,这个解决方案只有在A列中的值正好存在两次时才有效。但是,这些值也可能存在2次以上。例如,对于ProdID 2606639,可能会出现50的价格适用于所有3个ProdID,而不是仅适用于2个。最后的列表将经常更改,因此不能保证它与我发布的示例中的值保持相同。不完全是两次。你可以把同一个ProdID的任意多行,这将给你第二高的唯一价格。但是是的,如果给定的ProdID只有一个唯一的价格,那么它将导致错误,这在本质上是正确的,因为没有第二大数字。但这可能是我误解了-如果ID只有一个唯一的价格,您希望它做什么?