计算在没有VBA的情况下输入的最近20个值的平均值

时间:2016-07-08 14:48:09

标签: excel excel-formula

我需要计算K列中输入的最后20个值的平均值。

我已经了解到我可以使用以下方法找到最后输入的值:

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

这将是我的平均结束,我可以找到我的平均开头:

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

我现在的问题是,我如何使用这两个地址来创建平均公式? 这是电子表格每天都在获得新的价值,因此每天的单元格地址都是不同的。

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

所以我需要创建一个平均公式,其工作方式如下:

=average(K404:K424)

通过使用那些先前的公式结果。我没有选择从这些公式中输入数字。

我尝试了这个,但没有工作:

=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

4 个答案:

答案 0 :(得分:1)

你正在寻找=平均(...)

答案 1 :(得分:1)

试试这个 - 在构建嵌套公式时,您需要维护冒号的字符串文字。

address函数的结果应返回一个字符串,如"K404""K424"(或可能是"$K$404""$K$424")。你需要将冒号保持为字符串的一部分,就像这样,并在连接的地址字符串上使用Indirect函数:

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

答案 2 :(得分:1)

您可以将两个INDEX函数与冒号拼接在一起,以获得正确的单元格区域,而无需在INDIRECT函数返回的字符串上使用volatile ADDRESS¹。

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

这将平均K列中的最后20行。

average_index

¹当整个工作簿中的任何内容发生变化时,不仅在影响其结果的某些内容发生变化时,挥发性函数都会重新计算。 易失性函数的示例包括INDIRECTOFFSETTODAYNOWRANDRANDBETWEENCELLINFO工作表函数的某些子函数也会使它们变得不稳定。

答案 3 :(得分:1)

这是同一件事的另一个公式

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

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