如何在整列或不同范围内使用数组公式?

时间:2016-05-26 21:08:44

标签: excel-formula

我有一个我正在导入数据的电子表格。我需要找到最接近零的列中的值。该列包含正值和负值,最接近零的值将用于另一个公式。我找到了一个使用数组公式的答案,但它只适用于固定范围(例如K2:K10),导入到我的工作表中的记录数量每次使用时都会有所不同。

这是我到目前为止所拥有的:

= INDEX(K:K,MATCH(MIN(ABS(K:K)),ABS(K:K),0))

有没有办法在整个列上应用数组公式,只包括除列标题以外的非零单元格?或者可能只是具有数值的单元格?或者是否可以控制它适用的范围?

2 个答案:

答案 0 :(得分:0)

我们可以使用另一个不是数组的INDEX / MATCH公式动态查找范围中的最后一个单元格:

=INDEX(K:K,MATCH(1E+99,K:K))

这将找到K列中具有数字的最后一个单元格。

因此我们现在将其用作范围中的最后一个单元格:

=INDEX($K$2:INDEX(K:K,MATCH(1E+99,K:K)),MATCH(MIN(ABS($K$2:INDEX(K:K,MATCH(1E+99,K:K)))),ABS($K$2:INDEX(K:K,MATCH(1E+99,K:K))),0))

现在公式是动态的。

此公式仍是数组公式,必须在退出编辑模式时使用Ctrl-Shift-Enter确认。如果操作正确,那么Excel会将{}放在公式周围。

如果您指出有可能删除第2行,那么所有K2引用也将被删除。

代替K2,我们可以使用INDEX(K:K,2)它现在将始终查看第二行,并且在第2行被删除时不会出错。所以请改用它:

=INDEX(INDEX(K:K,2):INDEX(K:K,MATCH(1E+99,K:K)),MATCH(MIN(ABS(INDEX(K:K,2):INDE‌​X(K:K,MATCH(1E+99,K:K)))),ABS(INDEX(K:K,2):INDEX(K:K,MATCH(1E+99,K:K))),0))

Offset()函数有少量没有问题,但它是一个易失性函数。这意味着它将计算每个时间excel计算它所依赖的数据是否已经改变。

答案 1 :(得分:0)

为了阅读这篇文章的任何人的利益,我遇到了另一个问题并找到了解决方法。斯科特克拉纳上面的答案运作良好,直到我运行了一张我用于该表的宏,这将删除某些行。如果第2行被删除,公式将给出#REF错误,因为它试图调用$ K $ 2.

我的解决方案是用

取代$ K $ 2
<data android:scheme="wear" android:host="*" android:pathPrefix="/showToast" />

因此,完整的公式将是:

OFFSET(K1,1,0)

正如斯科特所提到的,记得按住Ctrl-Shift-Enter来执行数组公式。