改进电子表格公式更具动态性

时间:2015-03-30 14:35:25

标签: google-sheets spreadsheet

我有几张纸,我想过滤它们的值并将它们加在一起。我有一个工作职能:

=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

1 个答案:

答案 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)。