繁体   English   中英

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

[英]Excel Formula - How to get the highest 2 values of a cell based on another cell

我需要以下要求的帮助:

原始数据

            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 :金额最高的供应商
  • Amount1MainVendor的金额
  • 2Vendor:第二高的供应商
  • 数量2 :2供应商的数量

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

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

在C列中。

我无法获取BDE列的值。

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

要获取Amount1Amount2值,可以使用:

=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函数仅选择1000005000中的第一100000 ,因为数组中的其他值现在为0
  • 拿到第二大,第三大等你,声讯23等进入LARGE功能
  • LARGE函数包装在INDEX以获取实际值,因为我相信它会将其返回为1元素数组(尽管在公式检查器中尚不清楚)

样品:

在此处输入图片说明

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

样品:

在此处输入图片说明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM