实际上,我想对按字母顺序排列的成绩给出数字分数并将其相加。在 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 功能没有。我也尝试过使用它 OFFSETINDIRECT 没有成功。最后, 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 需要单个单元格来查找(在第一个参数中),我认为如果不使用单独的查找范围,您就无法让它工作。

Google Spreadsheets 似乎没有 LOOKUP 功能

大概当时没有,但现在确实有:

SO27774 example

grades 表 1!A2:A4
scoringarray 表 1!A2:B4

我知道这个线程已经很老了,但我已经为同样的问题苦苦挣扎了一段时间。我终于找到了一个解决方案(嗯,弗兰肯斯蒂德在一起)。它只是稍微优雅一些​​,但应该能够毫无问题地处理大型数据集。

该解决方案使用以下内容:

=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)), ))

0

或者您可以使用一些带有规则的侧单元格:

=SUM(IFERROR(ARRAYFORMULA(VLOOKUP(A2:A, E2:F, 2, 0)), ))

6


备择方案: https://webapps.stackexchange.com/a/123741/186471

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top