计算没有VBAinput的最后20个值的平均值

我需要计算K栏中input的最后20个值的平均值。

我已经学会了,我可以通过使用这个find最后input的值:

=address(max(match(1e99; K:K)); 11; 4; 1) 

这将是我的平均结束,我可以find我的平均开始:

 =address(max(match(1e99; K:K))-20; 11; 4; 1) 

我现在的问题是,我怎样才能使用这两个地址来创build一个平均公式? 这是电子表格每天都会获得新的价值,因此每天的单元格地址将会不同。

例如,这两个公式将分别产生:K424和K404。

所以我需要创build一个平均公式,其工作原理如下:

 =average(K404:K424) 

通过使用这些先前的公式结果。 我没有select从这些公式获得的数字。

我试过这个,但没有工作:

 =average((address(match(1e99; K:K))-20; 11; 4; 1)):(address(match(1e99; K:K)); 11; 4; 1))) 

如果我尝试: =average((address(match(1e99; K:K))-20; 11; 4; 1))&":"&(address(match(1e99; K:K)); 11; 4; 1)))

我得到#VALUE

您可以将两个INDEX函数与冒号一起拼接成适当的单元格范围,而不必在由ADDRESS函数返回的string上使用易失性的INDIRECT¹ 。

 =average(index(K:K; match(1e99; K:K)-19):index(K:K; match(1e99; K:K))) 

这将平均K列的最后20行

average_index


¹ 只要整个工作手册中的任何内容发生变化,挥发性函数就会重新计算,而不仅仅是当影响结果的内容发生变化时。 易失性函数的例子是间接 , 偏移 , 今天 , 现在 , 兰德和兰德维恩 。 CELL和INFO工作表函数的一些子函数也会使它们变得不稳定。

你正在寻找=平均(…)

试试这个 – 在构build嵌套公式时,需要维护冒号的string文字。

两个address函数的结果应该返回一个string,如"K404""K424" (或可能是"$K$404""$K$424" )。 您还需要将冒号作为string的一部分维护,如下所示,并在拼接地址string上使用Indirect函数:

 =average(Indirect((address(match(1e99; K:K)); 11; 4; 1))&":"&(address(match(1e99; K:K))-20; 11; 4; 1)))) 

这是同样的事情的另一个公式

{=SUM(IF(ROW(G:G)>MATCH(1E+99,G:G)-20,G:G,0))/20}

这是一个数组公式,所以你必须使用CTRL-SHIFT-ENTER