基于 excel/google sheet 中的列和行的平均值

Average ifs based on column and row in excel/google sheet

所以我有这个 table:

我在 B11 中手动添加了 1.5,在 B12 中手动添加了 5,但是我应该输入什么公式来计算给定日期之前或之后的平均值?

按照您目前的设置方式,您可以使用 INDEX/MATCH 到 return 您要查找的行,将其提供给 AVERAGEIFS,并将日期与第一行进行匹配:

=averageifs(index(A1:E4, match(B9, A1:A4, 0)), A1:E1, "<=" &B10)
=averageifs(index(A1:E4, match(B9, A1:A4, 0)), A1:E1, ">" &B10)

在 Google 表格上查看此演示,但 Excel 的公式应该相同:

https://docs.google.com/spreadsheets/d/1_e1sF8yrFZQuamnQNcRn5US71-csbdDGH9b-1ZrBlBk/edit?usp=sharing

INDEX 采用三个参数,一个范围、一个行号和一个可选的列号。如果它只传递一个一维范围(行或列)和一个数字,它会根据您给它的索引找到该范围内的第 n 个单元格。如果它传递了一个多维数组,它 return 是第 n 行。您还可以通过向其传递三个参数来 return 整个列,但将第二个参数设为 false 或 0:INDEX(range, false, n).

MATCH 在一个范围内查找您要查找的值,并且 returns 是该位置的一个数字。

因此以这种方式使用 INDEX/MATCH 将 return 该行,然后您可以照常使用 AVERAGEIFS。

尝试:

=AVERAGE(FILTER(FILTER(B2:6, A2:A6=B9), B1:1<=B10))

和:

=AVERAGE(FILTER(FILTER(B2:6, A2:A6=B9), B1:1>B10))