我需要一個更靈活的前端XIRR可以組合任意數量的現金流和日期範圍,所以我開始了與Excel VBA中的ParamArray不很像-A1:A10
Public Function vbIRR(ParamArray args())...
和所有下面的作品就好了,這樣,當我打電話像
=vbIRR(A1:A10,B1:B10)
我得到一個很好的答案。麻煩的是,我的A1:A10的佈局可能與執行有效的XIRR計算所需的符號相反。現在我可以調整我的VBA,當然,但我更普遍的應該可以簡單地寫
=vbIRR(-A1:A10,B1:B10)
它不工作。調試VBA,我可以看到參數(0)是「錯誤2015」。 (我也注意到,標準的XIRR類似地出錯了。)
這很奇怪,因爲當我看着「fx」(單擊函數嚮導)驗證函數的輸入時,我無法區分one和另一個(超出期望的符號變化到第一範圍的值)。兩個調用都顯示一個範圍作爲第一個參數。
任何指針讚賞。謝謝閱讀。
編輯:這個問題似乎涉及到控制移輸入(CSE)。過去我多次注意到,「fx」似乎對CSE v E.更爲無動於衷。如果與CSE一起輸入,XIRR將返回結果。奇怪的是(和不快),args來類型名(0)在這個調用變爲(而不是「範圍」)「變體()」。所以我需要一個額外的案例。
你指的陣列式蓋下,使用CSE告知Excel公式是被視爲一個arary,那麼這允許Excel以更改整個範圍 –
我的符號,另外,具有myXIRR功能,允許非連續範圍。該參數是類型爲變的,我包括檢查'TypeOf運算X是Range'做是爲了二維數組穿過'XIRR'轉換成一維數組processingit之前。而且,通過CSE,它可以像工作表函數一樣處理取反範圍。 –
有趣的是,羅恩,我們都覺得有必要做同樣的事情。 XIRR功能有一些根本性的缺陷。我剛剛發佈了我的MMULT解決方案來回答Leviathan。但是,我注意到一些古怪的東西:我的最終答案來自簡單的vbIRR = WorksheetFunction.XIRR(現金流,日期)。這在我開發的測試表中無條件地工作。在製作表中,它拒絕工作。最後,我設法通過將Cashflows()和Dates()定義爲「Double」來實現它。任何想法可能是關於什麼? – Ollie2893