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 :金额最高的供应商
  • 金额1MainVendor金额
  • 2卖主 :第二高的供应商
  • 金额2 :2供应商金额

我只能使用以下数组公式获取Amount1值:

 {=MAX(IF(A:A=[@[Opp]];C:C))} 

在C栏

我没有得到列BDE的值

任何帮助将非常感激。

这是一个解决scheme – 如果人们可以重构公式,可能会有些复杂,很高兴听到build设性的批评。

要获取您可以使用的Amount1Amount2值:

 =INDEX(LARGE($C$2:$C$10*--($A$2:$A$10=$A13),1),1) 

哪里:

  • $C$2:$C$10Amount栏中的值
  • 乘以--($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第一个最大的1000005000因为数组中的其他值现在为0
  • 以获得第二大,第三大等你suppy 2等进入大function
  • LARGE函数被包装在INDEX以获得实际值,因为我相信它将其作为1元素数组返回(尽pipe这对于公式检查器来说是不清楚的)

样品:

在这里输入图像说明

要获得MainVendorVendor2值,您可以使用:

 =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$10Vendor栏中的值
  • 该索引是通过使用 AmountX 相同的公式对其自己的源数组使用MATCH来检索的
  • MATCH被包装在另一个INDEX以获取实际值,我再次认为该值是作为一个1元素数组返回的

样品:

在这里输入图像描述

我创build了另一组Opp值,该公式在“ Amount列中使用了一些重复的值,但对于不同的Opp