2017-03-17 62 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