我正在尝试生成一个 Excel 公式,对 G 列中的最后 5 个数字值求平均值并与 B 列中的名称匹配,同时忽略任何空白单元格来计算具有数字的单元格的最后 5 个值。
例如,数据格式如下:
John Smith 100
Adam Pratt 95
Michael Keen 86
John Smith 56
John Smith 78
John Smith 92
John Smith 88
我希望能够计算“John Smith”的最后一个值的平均值。
任何帮助都值得感激!
答案1
假设没有版本限制,如您的标签所示,您可以使用:
=AVERAGE(TAKE(FILTER(B1:B100,A1:A100="John Smith"),-5))
FILTER
仅返回 Col B 中与 John Smith 匹配的项目TAKE
使用-5
rows 参数返回最后五项AVERAGE
=> 这五项的平均值
由于您没有指明如果项目少于五项时您希望发生什么,因此此公式将对现有项目取平均值。如果您希望发生其他情况,则需要更改公式。
如果您想动态创建一个包含每个名称及其相应平均值的输出表(最多最后五个元素),那么您可以在单个单元格中使用此公式,结果将溢出到输出范围:
=LET(
x, UNIQUE(
FILTER($A$1:$A$100, A1:$A$100 <> "")
),
y, BYROW(
x,
LAMBDA(arr,
AVERAGE(
TAKE(
FILTER(
$B$1:$B$100,
$A$1:$A$100 = arr
),
-5
)
)
)
),
HSTACK(x, y)
)
答案2
答案3
我假设你的数据在 中
A2:B8
。您可以使用适用于所有 Excel 版本的此公式。
=IF(COUNTIFS(A2:A8,"John Smith",B2:B8,"<>")>=5,AVERAGE(IF((A2:A8="John Smith")*(B2:B8<>""),LARGE(B2:B8*(A2:A8="John Smith"),{1,2,3,4,5}))), "")
你得到答案了
82.80
。
注意:根据需要调整单元格引用。