作成日: 2018/10/22 最終更新日: 2018/12/18
文書種別
不具合
状況
修正済み
詳細
■事象
一部の関数について、10.0J以前のバージョンと異なる結果を返す場合があります。
問題が発生する関数は、以下の通りです。
■再現サンプルコード(VB.NET)
■v11とv10の動作結果比較
一部の関数について、10.0J以前のバージョンと異なる結果を返す場合があります。
問題が発生する関数は、以下の通りです。
- CEILING(.MATH、.PRECISEを含む)
- FLOOR(.MATH、.PRECISEを含む)
- ROUND(ROUNDUP, ROUNDDOWNを含む)
- TRUNC
- DELTA
- PERCENTILE(.EXC、.INCを含む)
- QUARTILE(.EXC、.INCを含む)
■再現サンプルコード(VB.NET)
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' 行・列数、列幅を調整します。
Me.FpSpread1.ActiveSheet.RowCount = 8
Me.FpSpread1.ActiveSheet.ColumnCount = 2
Me.FpSpread1.ActiveSheet.Columns(0).Width = 120
Me.FpSpread1.ActiveSheet.Columns(1).Width = 180
' セルに値をセットします。
Me.FpSpread1.ActiveSheet.Cells(0, 0).Value = 100000.0
Me.FpSpread1.ActiveSheet.Cells(0, 1).Value = -148.2
' セルに数式を設定します
Me.FpSpread1.ActiveSheet.Cells(1, 0).Formula = "A1*B1/100"
Me.FpSpread1.ActiveSheet.Cells(2, 0).Formula = "CEILING(A2,1)"
Me.FpSpread1.ActiveSheet.Cells(3, 0).Formula = "FLOOR(A2*-1,1)"
Me.FpSpread1.ActiveSheet.Cells(4, 0).Formula = "ROUNDUP(A2,5)"
Me.FpSpread1.ActiveSheet.Cells(5, 0).Formula = "ROUNDDOWN(A2*-1,3)"
Me.FpSpread1.ActiveSheet.Cells(6, 0).Formula = "TRUNC(A2,1)"
Me.FpSpread1.ActiveSheet.Cells(7, 0).Formula = "DELTA(A2,-148200)"
' 数式を右側のセルに表示します。
For i As Integer = 1 To 7
Me.FpSpread1.ActiveSheet.Cells(i, 1).Text = Me.FpSpread1.ActiveSheet.Cells(i, 0).Formula
Next
End Sub
' 行・列数、列幅を調整します。
Me.FpSpread1.ActiveSheet.RowCount = 8
Me.FpSpread1.ActiveSheet.ColumnCount = 2
Me.FpSpread1.ActiveSheet.Columns(0).Width = 120
Me.FpSpread1.ActiveSheet.Columns(1).Width = 180
' セルに値をセットします。
Me.FpSpread1.ActiveSheet.Cells(0, 0).Value = 100000.0
Me.FpSpread1.ActiveSheet.Cells(0, 1).Value = -148.2
' セルに数式を設定します
Me.FpSpread1.ActiveSheet.Cells(1, 0).Formula = "A1*B1/100"
Me.FpSpread1.ActiveSheet.Cells(2, 0).Formula = "CEILING(A2,1)"
Me.FpSpread1.ActiveSheet.Cells(3, 0).Formula = "FLOOR(A2*-1,1)"
Me.FpSpread1.ActiveSheet.Cells(4, 0).Formula = "ROUNDUP(A2,5)"
Me.FpSpread1.ActiveSheet.Cells(5, 0).Formula = "ROUNDDOWN(A2*-1,3)"
Me.FpSpread1.ActiveSheet.Cells(6, 0).Formula = "TRUNC(A2,1)"
Me.FpSpread1.ActiveSheet.Cells(7, 0).Formula = "DELTA(A2,-148200)"
' 数式を右側のセルに表示します。
For i As Integer = 1 To 7
Me.FpSpread1.ActiveSheet.Cells(i, 1).Text = Me.FpSpread1.ActiveSheet.Cells(i, 0).Formula
Next
End Sub
■v11とv10の動作結果比較
回避方法
Service Pack 2(v11.0.4503.2012)で修正済み。
Service Pack 2を適用せずに対処する方法としては、以下のいずれかの方法が有効です。
Service Pack 2を適用せずに対処する方法としては、以下のいずれかの方法が有効です。
- 旧形式の関数(FarPoint.CalcEngine名前空間内)をカスタム関数として使用する。
たとえば、旧形式のCeiling関数を使用する場合、以下のようなコードを実装します。
■サンプルコード(VB.NET)
Me.FpSpread1.ActiveSheet.AddCustomFunction(New FarPoint.CalcEngine.CeilingFunctionInfo())
※コードエディタ上には廃止された機能である旨の警告が表示されますが、問題ありません。
※Formulaプロパティに関数を設定する前に、上記のコードが実行されるようにしてください。 - 正常な結果を返すカスタム関数を定義し、それを使用する。
旧文書番号
83312