【问题标题】:Google Sheets: extract one column of a named rangeGoogle表格:提取命名范围的一列
【发布时间】:2020-04-22 14:42:16
【问题描述】:

更新

我最初的问题是关于取一个命名范围的单列的平均值。但经过反思,问题概括为“如何从命名范围中提取单个列?”

原始问题

我正在使用命名范围从大型数据集中提取两列。假设MyRange 在更大的数据集中定义了三行两列:

 ... |G   |H   | ...
+----|----|----|
| ...          |
|2000|15.1|  10|
|2001|15.2|  23|
|2002|15.3|  30|
| ...          |

使用MyRange,我将如何取(仅)列H的平均值?
我已经尝试了各种方法,例如 AVERAGE(MyRange:H)AVERAGE(INDEX(MyRange 1)),但还没有找到正确的语法。
(在上面的示例中,结果应该是 21。) p>

【问题讨论】:

    标签: google-sheets google-sheets-formula google-sheets-query


    【解决方案1】:

    或者有一种久经考验且值得信赖的索引方式:

    =average(index(NamedRange1,0,2))
    

    (将行指定为 0 表示使用整列)

    【讨论】:

    • 啊!这就是我一直在寻找的。我不知道行字段中 0 的意义。
    【解决方案2】:

    您可以使用查询:

    =Query(ArrayFormula(MyRange), "select avg(H) label avg(H) ''") 
    

    作为替代。

    为什么不从He.g. 列中的 3 行中创建一个新的命名范围 MyRangeH?
    然后,使用:

    =AVERAGE(MyRangeH) 
    

    【讨论】:

    • 我使用具有两列的命名范围,因为我需要第一列进行其他计算——它们在逻辑上是联系在一起的。如果我创建了一个单独的命名范围,它们可能会不同步。
    • 我明白了。然后你可以使用查询。但我不得不承认。我更喜欢你的解决方案。
    【解决方案3】:

    我偶然发现了一种使用FILTER() 的更简单的方法:

    =AVERAGE(FILTER(MyRange, {FALSE, TRUE}))
    

    之所以有效,是因为FILTER(MyRange, {FALSE, TRUE}) 提取(仅)第二列,然后将其传递给AVERAGE()

    【讨论】:

    • 有趣的解决方案:)
    【解决方案4】:

    按照现在更新的问题:

    我最初的问题是关于取一个命名范围的单列的平均值。但经过反思,问题概括为“如何从命名范围中提取单个列?”

    也可以使用:

    =AVERAGE(OFFSET(MyRange,0,2))
    

    关于OFFSET

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多