[]
        
(Showing Draft Content)

共有数式

SpreadJSでは、共有数式がサポートされます。formulaメソッドを使用して、共有数式をセル範囲に適用できます。これにより、セル範囲の各セルに同じ数式を重複せずに効率的に設定することができるほか、SJS、SSJSON、Excelファイルのインポートやエクスポート時の数式の設定処理のパフォーマンスを改善できます。

使用例

例えば、以下の図のようにデータを表形式で表示するワークシートがあるシナリオを考えてみます。

shared-formulas-format

各項目の合計価格を計算する数式を[合計]列に追加するものとします。

合計価格を計算する数式は、[数量×価格]となります。セルE3の場合は、「=C3×D3」となります。

このような場合に、[合計]列に数式を設定するには、2つの方法があります。

  • 数式を個々のセルに適用する

    この方法では、ループ処理を使用して個々の行のセル参照を更新し、各セルに個別に数式を設定する必要があります。この方法を使用すると、大規模なデータや複雑な数式を含むワークシートの場合は、多くの時間がかかります。


  • 共有数式を適用する

    共有数式を使用すると、各行のセル参照が自動的に更新され、合計が適切に計算されます。

    [合計]列の各セルに数式を追加する代わりに、共有数式「=C3×D3」を使用します。共有数式は、cellRangeクラスのformula (value?: string, autoAdjustReference?: boolean)メソッドを使用し、autoAdjustReferenceパラメータをtrueに設定すると、各セルの相対参照を調整できます。


    apply-shared-formulas

    共有数式を使用するには、数式を適用するセル範囲を指定します。この例では、セル範囲は[E3:E6]であり、getRangeメソッドを使用して特定のセル範囲を取得できます。また、formulaメソッドで最初のセルの数式(例:E3)を設定すると、[合計]列の残りのセルの数式が自動的に計算されます。

次のサンプルコードは、formulaメソッドを使用してワークシートに共有数式を設定する方法を示します。

// autoAdjustReferenceをtrueに設定して共有数式を設定します。
sheet.getRange(2, 4, 4, 1).formula("=C3*D3", true);

autoAdjustReferenceパラメータをfalseに設定すると、結果は次のようになります。

parameter-false

パラメータがfalseの場合、「=C3×D3」の数式がそのままセル範囲E3からE6に適用されます。