计算没有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行
¹ 只要整个工作手册中的任何内容发生变化,挥发性函数就会重新计算,而不仅仅是当影响结果的内容发生变化时。 易失性函数的例子是间接 , 偏移 , 今天 , 现在 , 兰德和兰德维恩 。 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