我在用著LibreOffice 5.1.4.2 計算並需要計算內部報酬率對於特定付款(例如,在儲存格 中A1
),特定次數(例如,100
)。
如果我讓該值重複 100 次(例如,在 中A1:A100
),我可以這樣做:
=IRR(A1:A100)
但這似乎很奇怪(如果是 100,000 次怎麼辦?)。
問題是,該函數IIR
期望“包含值的陣列”。
如何重複多次傳遞IRR
值的陣列?A1
100
答案1
我認為您是在要求 Libreoffice Calc 做一些它無法做的事情。
在 LibreOffice Calc 中,陣列是「電子表格上包含值的連結儲存格範圍」(根據幫助文章數組函數)。有一種叫做「內聯數組常數」的東西,但那是為了將值放入數組中。IRR()
不是數組函數,它是一個以數組作為參數的單值函數。
我認為 LibreOffice Calc 希望您為這 100 個(或 100,000 個)單元格分配相同的值。
您可以透過多種方式填入儲存格。我會將值放入第一個單元格中,然後為第二個單元格提供一個公式,該公式從第一個單元格中讀取並帶有絕對引用,然後將第二個單元格向下填入100(或100,000)次以獲得我需要的陣列。我需要更改的只是第一個單元格中的值,它會通過數組傳播。
如果您確實想輸入一個簡潔的公式來計算 100,000 筆相同金額付款的內部收益率,也許 LibreOffice 不是完成這項工作的最佳工具。這是一個電子表格。一種程式語言,例如 Python 語言和numpy.irr()
功能,可能效果更好。
答案2
答案3
編寫一個函數,根據電子表格中的儲存格建立重複數組。
我沒有為 Calc 編寫任何程式碼,所以我不熟悉所使用的語法,但在偽代碼中:
function repeat( value, amount ) -> { value | value | value ... value }
……然後從 IRR 呼叫此代碼。
或者,建立一個執行所有操作的函數:
function repeatIrr( value, amount ) -> value
...並從電子表格中調用它。