我最初的问题是关于取一个命名范围的单列的平均值。但是,经过反思,这个问题笼统地变成了“如何从命名范围中提取单个列?”
我正在使用命名范围从大型数据集中提取两列。假设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。)
或者还有索引的尝试和受信任的方式:
=average(index(NamedRange1,0,2))
((为该行指定0表示使用整个列)
您可以使用查询:
=Query(ArrayFormula(MyRange), "select avg(H) label avg(H) ''")
作为替代。
从[H
列中的3行中,为什么不仅仅是创建新的命名范围,例如MyRangeH
?然后,使用:
=AVERAGE(MyRangeH)
我只是偶然发现了一种使用FILTER()
的简单方法:
=AVERAGE(FILTER(MyRange, {FALSE, TRUE}))
之所以起作用,是因为FILTER(MyRange, {FALSE, TRUE})
提取(仅)提取第二列,该列又被传递给AVERAGE()
。