Arrays 在不带宏的Excel中查找最大值并求和可变列数
我有一个Excel表格:Arrays 在不带宏的Excel中查找最大值并求和可变列数,arrays,excel,Arrays,Excel,我有一个Excel表格: A B C D Day1 Day2 Day3 1 Ron 3 2 2 2 Don 4 2 1 3 Ton 1 5 2 在不同的工作表上,我需要生成以下类型的表(不使用宏): 其中,该值是每天每对值的最大值,在所有天数中求和。因此,如果只是3个名字和3天,我会使用下面的公式和一个VLOOKUP来查看每个名字在某一天的值,并为每一天复制/粘贴它。(旁注,实际上我的项
A B C D
Day1 Day2 Day3
1 Ron 3 2 2
2 Don 4 2 1
3 Ton 1 5 2
在不同的工作表上,我需要生成以下类型的表(不使用宏):
其中,该值是每天每对值的最大值,在所有天数中求和。因此,如果只是3个名字和3天,我会使用下面的公式和一个VLOOKUP来查看每个名字在某一天的值,并为每一天复制/粘贴它。(旁注,实际上我的项目并没有那么大,所以当我发布这个问题时,我本可以完成它,但我真的想学习如何以更智能的方式完成它)
我尝试了以下方法:
{=SUM(MAX(VLOOKUP(Table2!$A2,Table1!$A:$D,{2,3,4},FALSE),VLOOKUP(Table2!D$1,Table1!$A:$D,{2,3,4},FALSE)))}
然而,显然VLOOKUP不能返回数组(索引匹配也不能)
任何帮助都将不胜感激。L42是正确的-
VLOOKUP
在查找值是一个范围或数组时返回数组时遇到问题,但使用数组代替列索引号时返回数组没有问题
要了解这一点,只需在单元格中放入一个VLOOKUP
,例如
=VLOOKUP($A2,表1!$A:$D,{2,3,4},0)
然后选择单元格,按F2键选择公式,按F9键查看结果,得到的结果类似于={3,2,2}
公式的问题是MAX
只取两个VLOOKUP
s返回的六个值中的最大值,它不会比较两个数组
要在单个公式中执行此操作,可以使用以下形式的公式:
=SUM(如果(array1>array2,array1,array2))
这将比较两个数组,并对每个位置的最大值求和,对于您的设置,这将是表2中的公式
=IF($A2=B$1,“-”,SUM(IF(VLOOKUP($A2,表1!$A:$D,{2,3,4},0)>VLOOKUP(B$1,表1!$A:$D,{2,3,4},0),VLOOKUP($A2,表1!$D,{2,3,4},0),VLOOKUP(B$1,表1,表1!$A:$D,{2,3,4},0))
按CTRL+SHIFT+ENTER键进行确认,然后进行横向和向下复制
如果列的数量较大,那么为了避免使用{2,3,4,5,6,7,8,9,10……等),可以使用INDEX/MATCH
而不是像这样使用VLOOKUP
=索引(表1!$B:$D,匹配($A2,表1!$A:$A,0),0)
注意:
索引
这里返回的是一个范围(不是数组)。MATCH
函数确定行号和一个零,因为列参数意味着您可以返回整行。问题是SUM
和MAX
无法计算它。因此,您需要在另一个单元格中输出矩阵或数组,然后在那里执行SUM
和MAX
函数。类似于我发布的内容。实际上,除了引用形式之外,还有一个数组形式。@Jeeped,这是真的,但在本文中的“数组形式”仅表示INDEX的第一个参数是数组,而不是返回数组
=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)))}