[SPRN07232]【数式】XIRR関数の結果がSPREADとExcelで異なる

文書番号 : 26748     文書種別 : 制限事項     最終更新日 : 2009/02/27
文書を印刷する
対象製品
SPREAD for .NET 2.5J Web Forms Edition
発生環境
動作保証環境と同様
詳細
SPREADとExcelでXIRR関数の結果が異なる場合があります。

【手順】
1.新規WebフォームにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.ボタンを押下してExcelファイルにエクスポートします
4.SPREADとExcelでXIRR関数の結果が異なります。
 SPREAD: -0.000823582742978
 Excel: 0.000000002980232

【サンプルコード】
-------------------------
Webフォームクラス
-------------------------
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If IsPostBack Then
      Return
    End If

    FpSpread1.ActiveSheetView.RowCount = 20

    FpSpread1.ActiveSheetView.Cells(0, 0).Value = New DateTime(2008, 3, 31)
    FpSpread1.ActiveSheetView.Cells(1, 0).Value = New DateTime(2008, 4, 30)
    FpSpread1.ActiveSheetView.Cells(2, 0).Value = New DateTime(2009, 4, 30)
    FpSpread1.ActiveSheetView.Cells(3, 0).Value = New DateTime(2009, 5, 31)
    FpSpread1.ActiveSheetView.Cells(4, 0).Value = New DateTime(2009, 10, 31)
    FpSpread1.ActiveSheetView.Cells(5, 0).Value = New DateTime(2009, 11, 30)
    FpSpread1.ActiveSheetView.Cells(6, 0).Value = New DateTime(2009, 12, 31)
    FpSpread1.ActiveSheetView.Cells(7, 0).Value = New DateTime(2010, 1, 31)
    FpSpread1.ActiveSheetView.Cells(8, 0).Value = New DateTime(2010, 2, 28)
    FpSpread1.ActiveSheetView.Cells(9, 0).Value = New DateTime(2010, 3, 31)
    FpSpread1.ActiveSheetView.Cells(10, 0).Value = New DateTime(2010, 4, 30)
    FpSpread1.ActiveSheetView.Cells(11, 0).Value = New DateTime(2010, 5, 31)
    FpSpread1.ActiveSheetView.Cells(12, 0).Value = New DateTime(2010, 6, 30)
    FpSpread1.ActiveSheetView.Cells(13, 0).Value = New DateTime(2010, 8, 31)
    FpSpread1.ActiveSheetView.Cells(14, 0).Value = New DateTime(2010, 12, 31)

    FpSpread1.ActiveSheetView.Cells(0, 1).Value = -2282
    FpSpread1.ActiveSheetView.Cells(1, 1).Value = -2110947
    FpSpread1.ActiveSheetView.Cells(2, 1).Value = -157585
    FpSpread1.ActiveSheetView.Cells(3, 1).Value = -99942
    FpSpread1.ActiveSheetView.Cells(4, 1).Value = -249527
    FpSpread1.ActiveSheetView.Cells(5, 1).Value = -2282
    FpSpread1.ActiveSheetView.Cells(6, 1).Value = -2282
    FpSpread1.ActiveSheetView.Cells(7, 1).Value = -64481
    FpSpread1.ActiveSheetView.Cells(8, 1).Value = -2282
    FpSpread1.ActiveSheetView.Cells(9, 1).Value = -2282
    FpSpread1.ActiveSheetView.Cells(10, 1).Value = -2282
    FpSpread1.ActiveSheetView.Cells(11, 1).Value = 1495
    FpSpread1.ActiveSheetView.Cells(12, 1).Value = -62199
    FpSpread1.ActiveSheetView.Cells(13, 1).Value = -1328803
    FpSpread1.ActiveSheetView.Cells(14, 1).Value = 4080000

    Dim dc As New FarPoint.Web.Spread.DoubleCellType
    dc.DecimalDigits = 15
    FpSpread1.ActiveSheetView.Cells(0, 2).CellType = dc

    FpSpread1.ActiveSheetView.Cells(0, 2).Formula = "XIRR(B1:B15,A1:A15,0.1)"

    FpSpread1.ActiveSheetView.Columns(2).Width = 180
  End Sub

  Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    FpSpread1.SaveChanges()

    Dim pathname As String = HttpContext.Current.Server.MapPath(Request.ApplicationPath & "/")
    FpSpread1.ActiveSheetView.Protect = False
    FpSpread1.SaveExcel(pathname + "test.xls")
    FpSpread1.ActiveSheetView.Protect = True
  End Sub
回避方法
現時点では、SPREADのXIRR関数の結果をExcelと同一にすることはできません。

この文書は、以前は次のFAQ IDで公開されていました : 7870