代码之家  ›  专栏  ›  技术社区  ›  Sam Brightman

在谷歌电子表格的数组公式中使用vlookup

  •  2
  • Sam Brightman  · 技术社区  · 16 年前

    实际上,我想给字母等级的数字分数,并求和。在Excel中,将 LOOKUP 数组公式中的函数起作用:

    {=SUM(LOOKUP(grades, scoringarray))}
    

    VLOOKUP 函数这不起作用(只得到一年级的分数)。谷歌电子表格似乎没有 查找 功能与 V查找 使用以下方法失败:

    =SUM(ARRAYFORMULA(VLOOKUP(grades, scoresarray, 2, 0)))
    

    =ARRAYFORMULA(SUM(VLOOKUP(grades, scoresarray, 2, 0)))
    

    是否可以这样做(但我的语法错误)?你能建议一种方法,允许在这样一个简单的单元格中进行计算,而不是将查找隐藏在其他地方,然后求和它们吗?

    4 回复  |  直到 16 年前
        1
  •  2
  •   paulmorriss    16 年前

    恐怕我认为答案是否定的。从帮助文本开始 http://docs.google.com/support/spreadsheets/bin/answer.py?answer=71291&query=arrayformula&topic=&type=

    array formula的真正强大之处在于,当您从其中一个计算中获取结果并将其包装在一个接受数组或范围参数的公式中时:sum、max、min、concatenate,

    由于vlookup只需要一个单元格来查找(在第一个参数中),我认为如果不使用单独的查找范围,就无法使它工作。

        2
  •  1
  •   pnuts    6 年前

    谷歌电子表格似乎没有查找功能

    当时可能没有,但现在确实有:

    SO27774 example

    grades 片材1!A2:A4
    scoringarray 片材1!A2: B4

        3
  •  0
  •   Sam Brightman    16 年前

    我仍然看不到你的例子中的公式(只是值),但这正是我试图用结果来做的;显然,我已经可以“并排”和单独求和了-我的关键是在一个单元格中做。

    今天早上我又看了一遍-用 MATCH 用于查找的函数在数组公式中工作。但是后来 INDEX 函数没有。我也试过用它 OFFSET INDIRECT 没有成功。最后, CHOOSE 函数似乎不接受一个单元格范围作为其列表进行选择-该范围将降级为单个值(范围中的第一个单元格)。还应注意的是, 选择 函数只接受30个值进行选择(根据文档)。都很烦人。但是,我现在在一个单元中有一个工作解决方案:使用 选择 函数,并在如下参数中逐个显式列出结果单元格:

    =ARRAYFORMULA(SUM(CHOOSE(MATCH(D1:D8,Lookups!$A$1:$A$3,0),
                                         Lookups!$B$1,Lookups!$B$2,Lookups!$B$3)))
    

    显然,这并没有很好地扩展,但希望查找表本质上是完全固定的。对于较大的查阅表格,单独键入所有单元格是很困难的,有些人可能超过了30个单元格的限制。

    我当然欢迎更优雅的解决方案!

        4
  •  0
  •   HHains    12 年前

    我知道这条线已经很旧了,但我在同一个问题上挣扎了一段时间。我终于想出了一个解决办法(好吧,弗兰肯斯坦一起)。它只是稍微优雅一点,但应该能够轻松地处理大型数据集。

    解决方案使用以下内容:

    =ARRAYFORMULA(SUM(INDIRECT(ADDRESS(MATCH(), MATCH())))
    

    作为vlookup函数的代理。

    我希望这能帮助别人!