Excel公式 - 如何根据另一个单元格获取单元格的最高2个值

时间:2017-02-20 17:55:25

标签: excel excel-formula

我需要一些以下要求的帮助:

原始数据

            A            B            C
      -------------------------------------
   1 |     Opp     |   Vendor    |  Amount |
     |-------------|-------------|---------|
   2 |     101     |   Vendor1   | 100000  |
   3 |     101     |   Vendor2   |   5000  |
   4 |     103     |   Vendor1   |  30000  |
   5 |     103     |   Vendor2   |   5000  |
   6 |     103     |   Vendor3   |  50000  |

输出表

            A             B           C         D         E
      ---------------------------------------------------------
   1 |     Opp     |  MainVendor | Amount1 | 2Vendor | Amount2 |
     |-------------|-------------|---------|---------|---------|
   2 |     101     |   Vendor1   | 100000  | Vendor2 |  5000   |
   3 |     103     |   Vendor3   |  50000  | Vendor1 |  30000  |
  • MainVendor :金额最高的供应商
  • Amount1 :MainVendor的金额
  • 2Vendor :第二高的供应商
  • 金额2 :2Vendor的金额

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

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

在C栏中。

我未能获得列 B D &的值电子

1 个答案:

答案 0 :(得分:0)

这是一个解决方案 - 如果人们可以重构这些公式,可能会有点乐观,听到建设性的批评。

要获取可以使用的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函数只选择第一大1000005000,因为数组中的其他值现在为0
  • 23等提供给LARGE函数
  • ,以获得第二大,第三大等
  • LARGE函数包含在INDEX中以获取实际值,因为我相信它将其作为1元素数组返回(尽管公式检查器不清楚)< / LI>

样品:

enter image description here

要获得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
  • 中的值
  • 使用{strong> 相同的公式 MATCHAmountX针对其自己的源数组
  • 检索索引
  • MATCH包装在另一个INDEX中以获取实际值,再次,我认为该值将作为1元素数组返回

样品:

enter image description here

我创建了另一组Opp值,该公式适用于Amount列中的一些重复值,但适用于不同的Opp