私はLibreOffice 5.1.4.2 Calcを使用しており、内部収益率を計算する必要があります。特定の支払い(たとえば、セルA1
)、特定の回数(たとえば、100
)。
値を100回繰り返した場合(たとえば、A1:A100
で)、次のことができます。
=IRR(A1:A100)
しかし、それは奇妙に思えます(10万回だとしたら?)。
問題は、関数IIR
が 「値を含む配列」 を期待していることです。
IRR
に値の配列をA1
繰り返し100
回渡すにはどうすればよいですか?
LibreofficeCalcにできないことをするように頼んでいると思います。
LibreOffice Calcでは、配列は「値を含むスプレッドシート上のセルのリンクされた範囲」です( ヘルプ記事配列関数 =)。 「インライン配列定数」のようなものがありますが、それは値を配列に入れるためのものです。 IRR()
は配列関数ではなく、配列を引数として取る単一値関数です。
LibreOffice Calcは、100個(または100,000個)のセルに同じ値を割り当てたいと考えています。
さまざまな方法でセルにデータを入力できます。最初のセルに値を入力し、2番目のセルに絶対参照を使用して最初のセルから読み取る数式を指定し、2番目のセルを100(または100,000)回埋めて、必要な配列を取得します。変更する必要があるのは最初のセルの値だけで、それは配列全体に伝播されます。
同じ金額の100,000回の支払いの内部収益率を計算するために簡潔な数式を本当に入力したい場合は、LibreOfficeがその仕事に最適なツールではない可能性があります。スプレッドシートです。 Python言語や numpy.irr()
関数のようなプログラミング言語の方がうまくいくかもしれません。
スプレッドシートのセルに基づいて繰り返し配列を作成する関数を記述します。
私はCalcのコードを書いたことがないので、使用されている構文に精通していませんが、擬似コードを使用しています。
function repeat( value, amount ) -> { value | value | value ... value }
...次に、このコードをIRRから呼び出します。
または、すべてを実行する関数を作成します。
function repeatIrr( value, amount ) -> value
...そしてスプレッドシートからそれを呼び出します。