在Google Spreadsheets的数组公式中使用VLOOKUP
实际上,我想给数字分数和字母分数相加并求和。在Excel中,将LOOKUP
函数放到数组公式中是可行的:
{=SUM(LOOKUP(grades, scoringarray))}
使用" VLOOKUP"功能将无法正常工作(仅获取一年级的分数)。 Google电子表格似乎不具有LOOKUP功能,而VLOOKUP则使用以下相同的方式失败:
=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))
或者
=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))
是否可以这样做(但我的语法错误)?我们是否可以建议一种方法,该方法允许在这样的一个简单单元格中进行计算,而不是将查找隐藏在其他位置并在之后进行求和?
解决方案
回答
恐怕我认为答案是否定的。从帮助文字开始
http://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=
The real power of ARRAYFORMULA comes when you take the result from one of those computations and wrap it inside a formula that does take array or range arguments: SUM, MAX, MIN, CONCATENATE,
由于vlookup需要一个单元格进行查找(在第一个参数中),所以我认为不使用单独范围的查找就无法使其正常工作。
回答
我仍然看不到示例中的公式(只是值),但这正是我要根据结果执行的操作;显然,我已经可以"在旁边"进行操作了,并单独总结对我来说,关键是在一个单元格中进行操作。
今天早上,我再次使用" MATCH"函数在数组公式中进行查找,从而再次对其进行了研究。但是然后" INDEX"功能就不行了。我也尝试过将它与OFFSET
和INDIRECT
一起使用而没有成功。最后," CHOOSE"函数似乎不接受单元格范围,因为从范围中选择的列表降级为单个值(该范围中的第一个单元格)。还应注意," CHOOSE"功能仅接受30个值可供选择(根据文档)。一切都很烦人。但是,我现在在一个单元格中有一个可行的解决方案:使用CHOOSE函数并在类似这样的参数中逐一列出结果单元格:
=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A:$A,0), Lookups!$B,Lookups!$B,Lookups!$B)))
显然,这不能很好地扩展,但是希望查找表本质上是固定的。对于较大的查找表,很难单独键入所有单元格,有些人可能会超过30个单元格的限制。
我当然欢迎更优雅的解决方案!