excel 最后10个单元格的平均值,数据从下到上,采用数组公式

wb1gzix0  于 2023-11-20  发布在  其他
关注(0)|答案(4)|浏览(116)

x1c 0d1x的数据
我试图计算过去10年的平均值,每一年的数据都有最少的“助手”列,所以在这里的例子中,我希望能够计算出2023年和2022年的平均值133.91,84.4,92,88.6,118.3,73.7,103.2,54,882.4和79.5,84.4,92,88.6,118.3,73.7,103.2,54,882.4和79.5,81.5,而不必使用2-3个助手列和排序我的数据不同,因为我需要它停留在其他公式的时间顺序。我希望能够只滑下该公式计算每年的平均值。
我尝试了map和index(颠倒数据的顺序)数组函数的组合,以及vstack和scan函数,但我相信我可能没有正确使用它们。

ohtdti5x

ohtdti5x1#

这是我的尝试,不是一个非常优雅的公式,但做的工作
使用原始数据集,在单元格C1中输入以下公式:

=AVERAGE(LET(Rng_B,LET(Rng_A,OFFSET($B1,,,-MIN(ROW(),100)),FILTER(Rng_A,NOT(ISERR(Rng_A)))),DROP(Rng_B,MAX(0,COUNT(Rng_B)-10))))

字符串
将其向下拖动以获得最后10个有效值的平均值


的数据
所以这里有一个小小的解释,
首先,使用以下公式找到最后10个有效值

LET(Rng_A,OFFSET($B1,,,-MIN(ROW(),100)),FILTER(Rng_A,NOT(ISERR(Rng_A))))


我使用LET函数来避免多次写入相同的OFFSET公式。我给这个范围命名为Rng_A,假设列B中的连续错误小于100次(如果不是,您可以将100改为所需的限制)。
其次,使用DROP函数从Rng_A中选取最后10个值。

DROP(Rng_B,MAX(0,COUNT(Rng_B)-10))


为了避免在DROP函数中再次写入第一个LET函数,我再次使用了LET函数,并为过滤后的范围取了另一个名字Rng_B。
最后,使用AVERAGE函数求Rng_B的平均值。
请随时给我任何可以简化我的公式的建议。乐于学习:]

kmynzznz

kmynzznz2#

假设您的数据位于如下屏幕截图

所示的单元格中,您可以使用此公式

=LET(dat,TOCOL(B$1:B12,3),AVERAGE(CHOOSEROWS(dat,SEQUENCE(10,,ROWS(dat)-9,1))))

字符串
C12中,并根据需要复制下来。

brgchamk

brgchamk3#

更新

您可以在表格中使用此公式(插入>表格)-每当添加新行时,它将自动展开。或者- w/o table:向下拖动
这种方法考虑到了“过去10年的数据”这一要求。它TAKE是过滤结果的最后10行-如果少于10行,则为所有行

= LET(filteredData,FILTER([Value],(ROW([Value])<=ROW())*(ISERROR([Value])=FALSE)),
      last10,TAKE(filteredData, -MIN(10,ROWS(filteredData))),
      AVERAGE(last10))

字符串
x1c 0d1x的数据

第一解决方案-溢出公式

试试这个公式-使用yearsvalues的范围

=LET(years,A2:A15,
values,IFERROR(B2:B15,0),
BYROW(years,LAMBDA(y,
             AVERAGE(FILTER(values,(years>y-10)*(years<=y))))))


它会溢出来的-不需要拖下来。


mwngjboj

mwngjboj4#

第一个月


的数据

相关问题