在没有macros的Excel中查找MAX和SUM可变数量的列

我在Excel中有一个表格:

ABCD Day1 Day2 Day3 1 Ron 3 2 2 2 Don 4 2 1 3 Ton 1 5 2 

在不同的工作表上,我需要生成一个types的表(不使用macros):

  ABCD Ron Don Ton 1 Ron - - - 2 Don 8 - - 3 Ton 10 11 - 

价值是每一天中每对价值的最大值,在所有日子内总结。 所以,如果只是3个名字和日子,我只需要使用下面的公式和VLOOKUP来查看每个名字在特定date的价值,并且每天复制/粘贴它。 (注意,实际上我的项目并不是那么大,所以当我发布这个问题的时候,我可以做到这一点,但我真的想学习如何以更聪明的方式做到这一点)。

 =SUM(MAX( VLOOKUP(Table2!$A2,Table1!$A:$D,2,FALSE), VLOOKUP(Table2!B$1,Table1!$A:$D,2,FALSE)), and so on Day2, Day3... 

我尝试了以下内容:

  {=SUM(MAX(VLOOKUP(Table2!$A2,Table1!$A:$D,{2,3,4},FALSE),VLOOKUP(Table2!D$1,Table1!$A:$D,{2,3,4},FALSE)))} 

但是,显然VLOOKUP不能返回一个数组(而INDEX MATCH也不能)。

任何帮助将非常感激。

L42是正确的 – 当lookup值是一个范围或数组,但是用一个数组代替列索引号时, VLOOKUP在返回一个数组时遇到了麻烦,它返回的数组没有问题

要看到,只要把一个单一的VLOOKUP ,例如

=VLOOKUP($A2,Table1!$A:$D,{2,3,4},0)

然后select单元格,按F2select公式,然后按F9查看结果,得到如下结果={3,2,2}

您的公式的问题是, MAX只是采用两个VLOOKUP返回的六个值中的MAX ,它不会比较两个数组

要在单个公式中完成此操作,可以使用以下forms的公式:

=SUM(IF(array1>array2,array1,array2))

这将比较2个数组,并在每个位置上求和最大值,对于您的设置,这将是Table2 B2中的一个公式

=IF($A2=B$1,"-",SUM(IF(VLOOKUP($A2,Table1!$A:$D,{2,3,4},0)>VLOOKUP(B$1,Table1!$A:$D,{2,3,4},0),VLOOKUP($A2,Table1!$A:$D,{2,3,4},0),VLOOKUP(B$1,Table1!$A:$D,{2,3,4},0))))

CTRL + SHIFT + ENTER确认,然后横向和纵向复制

如果你有更多的列,那么为了避免使用{2,3,4,5,6,7,8,9,10 ……等},你可以使用INDEX/MATCH而不是像这样的VLOOKUP

=INDEX(Table1!$B:$D,MATCH($A2,Table1!$A:$A,0),0)

注意:这里的INDEX返回一个范围 (不是数组 )。 MATCH函数确定行号和一个作为列参数意味着你得到整个返回的行