2017-03-17 138 views
0

我有Excel中的一个简单函数。Array函数OFFSET

在A列,我有一些数字。在B列中,我在形式(B6)的函数:{=MAX(ROW(A$1:A5)*(A$1:A5<A6))}

这是一切都很好。它发现最近的前一行的值小于当前行的值。但是,如果我插入一行,功能之一将得到搞砸了,只是因为有相对引用。

我试图转换A$1:A5年代到OFFSET S,但出于某种原因,不能正常工作:

{=MAX(ROW(OFFSET(A$1,0,0,ROW()-1))*(OFFSET(A$1,0,0,ROW()-1)<A6))}

已经打破下来了一些测试,它显然的第二个实例OFFSET,和相关联的逻辑测试,也就是导致了问题。但我不明白为什么。或者如何解决它。

有没有办法让这个工作,或执行此插入安全的查询替代方法?

回答

0

有时ROW功能有问题,因为它返回一个数组,甚至当你想到一个值,例如它将返回{6}而不是6.

尝试使用像MAXSUM这样的函数强制将该数组设置为单个值。例如

=MAX(ROW(OFFSET(A$1,0,0,ROW()-1))*(OFFSET(A$1,0,0,SUM(ROW())-1)<A6))

+0

谢谢。 SUM()停止了该错误,这意味着返回的数组可能是问题所在。但是,由于某种原因,它没有给出预期的结果。我将不得不进一步玩。 – Rick