在 Google 电子表格的数组公式中使用 VLOOKUP
-
09-06-2019 - |
题
实际上,我想对按字母顺序排列的成绩给出数字分数并将其相加。在 Excel 中,将 LOOKUP
函数转换为数组公式的工作原理:
{=SUM(LOOKUP(grades, scoringarray))}
随着 VLOOKUP
这个函数不起作用(只能得到一年级的分数)。Google 电子表格似乎没有 LOOKUP
功能和 VLOOKUP
使用以下方法以同样的方式失败:
=SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))
或者
=ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))
是否可以这样做(但我的语法错误)?您能否建议一种方法,允许在像这样的一个简单单元格中进行计算,而不是将查找隐藏在其他地方然后再对它们求和?
解决方案 3
我仍然看不到你的例子中的公式(只是值),但这正是我在结果方面想要做的;显然我已经可以“在旁边”完成并分别求和 - 对我来说关键是在一个单元格中完成它。
我今天早上又看了一遍 - 使用 MATCH
用于查找的函数适用于数组公式。但随后 INDEX
功能没有。我也尝试过使用它 OFFSET
和 INDIRECT
没有成功。最后, CHOOSE
函数似乎不接受单元格范围作为其可供选择的列表 - 范围降级为单个值(范围中的第一个单元格)。还应该指出的是, CHOOSE
函数仅接受 30 个值可供选择(根据文档)。一切都很烦人。但是,我现在在一个单元格中有一个可行的解决方案:使用 CHOOSE
函数并在参数中一一明确列出结果单元格,如下所示:
=ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))
显然,这不能很好地扩展,但希望查找表本质上是相当固定的。对于较大的查找表,单独键入所有单元格会很痛苦,有些人可能会超过 30 个单元格的限制。
我当然欢迎更优雅的解决方案!
其他提示
恐怕我认为答案是否定的。从帮助文本开始http://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=
当您从这些计算之一中获取结果并将其包装在接受数组或范围参数的公式中时,ARRAYFORMULA 的真正威力就显现出来了:求和、最大值、最小值、连接、
由于 vlookup 需要单个单元格来查找(在第一个参数中),我认为如果不使用单独的查找范围,您就无法让它工作。
我知道这个线程已经很老了,但我已经为同样的问题苦苦挣扎了一段时间。我终于找到了一个解决方案(嗯,弗兰肯斯蒂德在一起)。它只是稍微优雅一些,但应该能够毫无问题地处理大型数据集。
该解决方案使用以下内容:
=ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))
作为 vlookup 函数的替代。
我希望这可以帮助别人!
你可以通过在 VR 表中硬编码来轻松做到这一点:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, {{"A", 6};
{"B", 5};
{"C", 4};
{"D", 3};
{"E", 2};
{"F", 1}}, 2, 0)), ))
或者您可以使用一些带有规则的侧单元格:
=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))