我有几张纸,我想过滤它们的值并将它们加在一起。我有一个工作职能:
=SUM(INDEX(Grades!M32:V32,0,B2)+INDEX(Grades!M32:V32,0,C2)+INDEX(Grades!M32:V32,0,D2)+INDEX(Grades!M32:V32,0,E2)+INDEX(Grades!M32:V32,0,F2)+INDEX(Grades!M32:V32,0,G2))
这很好用。问题是它不是真正的动态,我想知道是否有更有效的方法来处理这个而不是使用这么多的索引。
索引从另一张表中获取一个水平范围的数字,并从另一张表中的小表中获取所需的索引位置。
如果其中一个单元格为空,我可以通过插入IF
语句来完成我想要的公式。{/ 1}}。
VLOOKUP
答案 0 :(得分:0)
看起来有点奇怪,但这是一种方式:
=ArrayFormula(SUM(VLOOKUP(1,{1,Grades!M32:V32},B2:G2+1,0)))
在VLOOKUP
中,1
是您要搜索的值,{1,Grades!M32:V32}
是您要搜索的数组,B2:G2+1
是列索引(或者更确切地说) ,index)你希望返回,0
表明你需要完全匹配。
{1,Grades!M32:V32}
构建一个水平的单行数组,在最左边的元素中有1
,其值在Grades!M32:V32
的右边。
VLOOKUP
将搜索该数组的最左侧列。它总是会在最左边的列中“找到”它正在搜索的1
,因为我们特意制作了它。
在第三个参数中实际发生的操作,我们返回与B2:G2
中的值对应的制造数组中的列(我应该添加,我假设B2:G2
中的所有单元格都是填充 - 如果任何空白,它将返回错误的结果)。 +1
用于说明我们在查找数组左侧添加的额外元素(1
)。