PowerTools SPREAD for Windows Forms 10.0J
循環参照

数式では、その数式自身が含まれるセルを参照することができます。これを循環参照と呼びます。循環参照は通常、1つの関数を反復実行することで、演算結果を最適な値に近づけようとする目的で使用します。SheetViewクラスのMaximumIterationsプロパティで、再計算の反復回数を設定します。この設定により、関数が自身を繰り返し演算(反復)する回数が決まります。また、SheetViewクラスのMaximumChangeプロパティで、計算を停止する基準となる、最大の変化量を設定することもできます。

たとえば、セルC4内に「=COLUMNS(A1:C5)」という数式を設定すると、評価結果は返されません。つまり、配列内の最後の行および列インデックスが、数式の入力されたセルの行および列インデックスより大きい場合、この数式は計算できなくなります。この例では、セルC4 はセル範囲 A1:C5 内に含まれています。これが、数式内に循環参照が含まれる例であり、反復計算が有効にされていない限り、この数式は評価されません。

表計算に関する多くの製品(Excel、OpenOfficeを含む)と同様、製品では反復計算を使用して循環参照の式を解決します。1回の再計算サイクルで、反復計算が指定の回数だけ実行されます。1回の反復計算では、1つの循環参照式は一度だけ評価されます。1回の反復計算中に循環参照式が評価される正確な順序は、アプリケーション側で判断することはできません。多くの製品と同様、製品の循環参照式は、反復計算での評価順序とは関係なく、反復計算によって必要な解に収束させることを目的としています。

設定方法

  1. 数式が参照するセルに、値を、適切なデータ型に解析できるセル型を設定します。
  2. SheetViewクラスのIterationプロパティで循環参照を有効に設定します。
  3. SheetViewクラスのMaximumIterationsプロパティで、再計算の反復回数を設定します。
  4. CellクラスのFormulaプロパティで、循環参照を使用する数式を設定します。

サンプルコード

次のサンプルコードは循環参照を使用した数式を設定します。

C#
コードのコピー
fpSpread1.ActiveSheet.Iteration = true;
fpSpread1.ActiveSheet.SetValue(0, 1, 20);
fpSpread1.ActiveSheet.MaximumChange = 5;
fpSpread1.ActiveSheet.MaximumIterations = 5;
fpSpread1.ActiveSheet.SetFormula(0, 2, "A1*3");
fpSpread1.ActiveSheet.SetFormula(0, 0, "B1+C1");
Visual Basic
コードのコピー
FpSpread1.ActiveSheet.Iteration = True
FpSpread1.ActiveSheet.SetValue(0, 1, 20)
FpSpread1.ActiveSheet.MaximumChange = 5
FpSpread1.ActiveSheet.MaximumIterations = 5
FpSpread1.ActiveSheet.SetFormula(0, 0, "B1+C1")
FpSpread1.ActiveSheet.SetFormula(0, 2, "A1*3")
関連トピック

 

 


© 2004-2017, GrapeCity inc. All rights reserved.