我有一个我正在导入数据的电子表格。我需要找到最接近零的列中的值。该列包含正值和负值,最接近零的值将用于另一个公式。我找到了一个使用数组公式的答案,但它只适用于固定范围(例如K2:K10),导入到我的工作表中的记录数量每次使用时都会有所不同。
这是我到目前为止所拥有的:
= INDEX(K:K,MATCH(MIN(ABS(K:K)),ABS(K:K),0))
有没有办法在整个列上应用数组公式,只包括除列标题以外的非零单元格?或者可能只是具有数值的单元格?或者是否可以控制它适用的范围?
答案 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):INDEX(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来执行数组公式。