• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IRR関数の変動について)

IRR関数の変動について

このQ&Aのポイント
  • IRR関数を使って10年間投資した場合のIRRの変動を見ようと思っています。しかし、コードを実行しても10年後のIRRの結果が10個作成されるだけで、正しい結果が得られません。
  • Values(i)を定数式として指定しようとすると、エラーが発生します。また、rate = IRR(Values(i))とすると型が一致しないエラーが出ます。さらに、Values(3)までしか指定しないと「インデックスが有効範囲にありません」というエラーが出てしまいます。おそらくIRRの値がマイナスになっているためです。
  • これらの問題を回避しながら、10年分のIRRの変動を計算する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

Dim rate As Double Dim i  As Long ReDim Values(10) As Double Values(0) = (Range("A8").Value - Range("H10").Value) * -1 For i = 1 To 10   Values(i) = Range("B13").Offset(, i).Value Next For i = 10 To 1 Step -1   rate = 0   On Error Resume Next   rate = IRR(Values())   On Error GoTo 0   If rate = 0 Then     Cells(i + 9, 13).Value = "error"   Else     Cells(i + 9, 13).Value = rate   End If   ReDim Preserve Values(i - 1) Next こんな感じで、最初に配列をセットしてしまって 縮めながら計算していくと良いかもしれません。 また、Excelワークシート関数をApplicationレベルで使うと エラー処理を気にせず、まとめる事もできます。 Dim i As Long Dim rate 'As Double Dim Values Values = Range("B13:L13").Value Values(1, 1) = Range("H10").Value - Range("A8").Value For i = UBound(Values, 2) To 2 Step -1   rate = Application.IRR(Values)   Cells(i + 8, 13).Value = rate   ReDim Preserve Values(1 To 1, 1 To i - 1) Next equityをセルにセットして連続範囲にまとめればもっと簡単です。 例えばB13セルが使えるなら B13=H10-A8 With Range("M10:M19")   .Formula = "=IRR(OFFSET($B$13,0,0,1,ROW(A2)))"   .Value = .Value End With B13セルを使えなくてもどこかのセルを作業用として =H10-A8 =C13 =D13 =E13 : とし、その範囲を参照させれば良いです。

y-bankrupt
質問者

お礼

end-uさん またまた回答ありがとうございました VBAのコードのIRRより Application.IRRの方が、対象年数が変化したときの使い勝手がいいので こちらを使いました ありがとうございます

関連するQ&A

専門家に質問してみよう