0

我有一个带有成对数据集类型的 Excel 工作簿[columnA=time:columnB=data] 有数千个数据点。

我要做的是:我在单独的工作表上有一个时间值表。我想在数据工作表(B 列)的数据列中找到相应的单元格,并返回它之前的 5 个单元格和之后的 40 个单元格的值的平均值。

通过搜索问题,我想出了这个公式来返回我正在寻找的确切值的单元格地址,但是我不能把它放入一个平均公式中。

=CELL("address",INDEX('EMG Data'!B1:B10000,MATCH(C5,'EMG Data'!A1:A10000,0),1))

C5 是我知道我想要获取数据值对的时间值。

4

1 回答 1

1

改用平均,偏移和匹配的组合,偏移将允许您更改范围内的行/列数:

=IFERROR(AVERAGE(OFFSET($B$1,MAX(MATCH(C5,A:A,0)-6,0),0,46)),"SOMETHING IS WRONG")

匹配

MATCH() 将在第 1 列中找到正确的值并返回其在 A:A 中的位置。

抵消

要偏移到与单元格 B1 相比的相应行,您应该这样做MATCH()-1(否则单元格 A1 中的匹配产生 1 将偏移 B1 1 行,从而显示 B2 的值!

您想将 B1 偏移 0 列,因此将其作为第三个参数。

此外,您还希望拥有之前的 5 行,这样就MATCH()-6可以避免尝试从我们使用的负行号的行中检索数据MAX(MATCH()-6,0)

正如您希望之前的 5 个单元格和之后的 40 个单元格一样,您希望高度为 5 + 1 + 40 = 46 个单元格,使用高度参数的该数字完成偏移参数

平均

最后一步是获取实际平均值,因为OFFSET()函数会返回一系列单元格,这被视为AVERAGE函数的正常范围输入。

错误

如果在 A:A 列中找不到您要查找的值,MATCH()则会给出一个错误,该错误将通过嵌套函数起作用,我们大多数人会捕获此类事件IFERROR()并将错误转换为用户友好的内容,或者有一个在这种情况下的替代功能/结果

于 2013-05-02T06:14:41.530 回答