跨列获取最高值

时间:2014-10-31 16:03:51

标签: excel excel-vba excel-formula vba

我有一个包含姓名和金额列表的工作表。名称位于(C2:C33,J2:J33,Q2:Q33,X2:X33)。金额为(G2:G33,N2:N33,U2:U33,AB2:AB33)

我要做的是找到最高的8个金额,并使用相应的名称。例如,含义C3中的名称与G3中的金额相对应,J3中的名称与N3中的金额相对应,等等。

使用:

=LARGE((G2:G33,N2:N33,U2:U33,AB2:AB33),1)

我能够找到前8个值(通过将1更改为2个,3个,4个等)。我无法弄清楚如何“带上”这个名字,所以我一直在寻找。我找到了一个给我这个的解释:

=INDEX($C$2:$C$33,MATCH(1,INDEX(($G$2:$G$33=LARGE($G$2:$G$33,ROWS(N$36:N36)))*(COUNTIF(N$36:N36,$C$2:$C$33)=0),),0))

向下复制8个单元格将为我提供最高8个组合的名称,但仅使用列G值从C列的第一个分组开始。

过去几周我一直在寻找如何做到这一点,而且我已经没有想法了。我不知道我是否可以修改第一个公式以获取名称,或者第二个公式来查看其他3个相应的组。一旦我在第一张纸上获得前8名和金额,我需要将这些名称和金额与其他100张以上的前8名进行比较,以获得前8名。

这是否有意义,甚至可能吗?我需要使用VBA吗?我正在运行Excel 2010,但我不知道该解决方案是否特定于版本。万分感谢有人能为我解决这个问题!

1 个答案:

答案 0 :(得分:1)

不完全确定您要求的是什么,但这里有一组正常的Excel代码,它将为您提供最高值的第一个实例并返回相应的单元格。

=INDEX(C2:C33,MATCH(MAX(G2:G33),G2:G33,0),1)

如果您要求该列中的8个最高值...您将使用

=INDEX(C2:C33,MATCH(LARGE(G2:G33,[replace with 1-8]),G2:G33,0),1)

编辑:当然,如果有两个具有相同值的数字,它将无效。在这种情况下,我会使用VBA,将数字拉入2D数组,并根据G列中的值重新排序数组。