Excel公式 – 如何获得基于另一个单元格的最高2个单元格的值
我需要一些帮助以满足以下要求:
原始数据
ABC ------------------------------------- 1 | Opp | Vendor | Amount | |-------------|-------------|---------| 2 | 101 | Vendor1 | 100000 | 3 | 101 | Vendor2 | 5000 | 4 | 103 | Vendor1 | 30000 | 5 | 103 | Vendor2 | 5000 | 6 | 103 | Vendor3 | 50000 |
输出表
ABCDE --------------------------------------------------------- 1 | Opp | MainVendor | Amount1 | 2Vendor | Amount2 | |-------------|-------------|---------|---------|---------| 2 | 101 | Vendor1 | 100000 | Vendor2 | 5000 | 3 | 103 | Vendor3 | 50000 | Vendor1 | 30000 |
- MainVendor :金额最高的供应商
- 金额1 : MainVendor金额
- 2卖主 :第二高的供应商
- 金额2 :2供应商金额
我只能使用以下数组公式获取Amount1值:
{=MAX(IF(A:A=[@[Opp]];C:C))}
在C栏
我没有得到列B , D & E的值 。
任何帮助将非常感激。
这是一个解决scheme – 如果人们可以重构公式,可能会有些复杂,很高兴听到build设性的批评。
要获取您可以使用的Amount1
, Amount2
值:
=INDEX(LARGE($C$2:$C$10*--($A$2:$A$10=$A13),1),1)
哪里:
-
$C$2:$C$10
是Amount
栏中的值 - 乘以
--($A$2:$A$10=$A13)
– 表示{1;1;0;0;0;0;0;0;0} * {100000;5000;30000;5000;50000;45000;50000;40000;51000}
– 这会消除“Amount
列中与该行的Opp
不对应的值的影响。 -
LARGE
函数然后只select第一个最大的100000
和5000
因为数组中的其他值现在为0
。 - 以获得第二大,第三大等你suppy
2
等进入大function -
LARGE
函数被包装在INDEX
以获得实际值,因为我相信它将其作为1元素数组返回(尽pipe这对于公式检查器来说是不清楚的)
样品:
要获得MainVendor
和Vendor2
值,您可以使用:
=INDEX($B$2:$B$10,INDEX(MATCH(LARGE($C$2:$C$10*--($A$2:$A$10=$A13),1),$C$2:$C$10*--($A$2:$A$10=$A13),0),1))
这是:
-
$B$2:$B$10
是Vendor
栏中的值 - 该索引是通过使用与
AmountX
相同的公式对其自己的源数组使用MATCH
来检索的 -
MATCH
被包装在另一个INDEX
以获取实际值,我再次认为该值是作为一个1元素数组返回的
样品:
我创build了另一组Opp
值,该公式在“ Amount
列中使用了一些重复的值,但对于不同的Opp
。