2014-02-06 49 views
-1

Excel公式結果我有以下方程:在雙對數空間在一個陣列和值誤差

=EXP(FORECAST(LN($A4), LN(OFFSET(INDIRECT($B$1 & "!B8"), MATCH($A4, INDIRECT($B$1 & "!A8:A308"), 1) - 1, COLUMN() - COLUMN($B4), 2)), LN(OFFSET(INDIRECT($B$1 & "!a8"), MATCH($A4, INDIRECT($B$1 & "!A8:A308"), 1) - 1, 0, 2)))) 

的計算進行線性插值。在該部分的評價:

INDIRECT($B$1 & "!A8:A308"), 1) - 1, COLUMN() - COLUMN($B4), 2) 

列差(COLUMN() - COLUMN($B4))導致的陣列(例如,{0})。這會導致MATCH()函數的值錯誤。如果我運行上面的INDIRECT(...)調用,則列差異不會導致數組。我目前的解決方案是將列差與LARGE(..., 1)包裝在一起,這有效地平整了陣列。

問題是爲什麼列差異導致數組,並有沒有更好的方法來處理這個問題?

+0

我知道這不是一個答案,但你有沒有考慮過使用宏或用戶定義的函數? – foochow

+0

不幸的是,宏/函數是不允許的。這不是一個很好的答案,但這就是答案。 – arkottke

+0

這也不是答案,但我很好奇:如果在第一個'COLUMN()'中使用單元格引用,那麼會出現同樣的問題嗎(在單元格A1中它是'COLUMN(A1)')? – BrettFromLA

回答

1

找到了! Microsoft Office Reference對COLUMN函數說:「如果省略了引用參數... COLUMN函數將引用的列號作爲水平數組返回。」

這就是解釋。那麼,解決方案是使用COLUMN(A1)而不是COLUMN()

+0

@arkottke如果這個答案可以幫助你,我會很高興它upvote。謝謝! – BrettFromLA

+0

看起來很有希望。我繼續做出改變,但仍然失敗。 [Here](http://i.imgur.com/DLW0y6m.png)是等式的調試過程。注意'COLUMN(B4)'仍然返回{2},並且{2} - {2} = {0}。 – arkottke

+0

哇!我認爲這會解決它。遊民。 : -/ – BrettFromLA