SpreadJS製品ヘルプ
セル参照の使用
関数リファレンス > 数式の概要 > 数式内のセル参照 > セル参照の使用

SpreadJSを使用すると、セル参照を使用してさまざまな操作を実行できます。

式ツリーを数式に変換

次のサンプルコードは、expressionToFormulaメソッドを使用して式ツリーを数式文字列に変換します。

JavaScript
コードのコピー
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), {
  sheetCount: 1
});
sheet = spread.getSheet(0);
sheet.setValue(0, 0, 1);
sheet.setValue(0, 1, 2);
sheet.setValue(0, 2, 3);
sheet.addCustomName("customName1", "=12", 0, 0);
sheet.addCustomName("customName2", "Average(20,45)", 0, 0);
sheet.addCustomName("customName3", "=$A$1:$C$1");
sheet.setFormula(1, 0, "customName1");
sheet.setFormula(1, 1, "customName2");
sheet.setFormula(1, 2, "sum(customName3)");
var cname = sheet.getCustomName("customName2");
if (cname instanceof GC.Spread.Sheets.NameInfo)
{
  //CustomNameを取得します。
  var name = cname.getName();
  //式を取得します。
  var expression = cname.getExpression();
  //式ツリーを取得します。
  var expStr = GC.Spread.Sheets.CalcEngine.expressionToFormula(sheet, expression, 0, 0);
  console.log("Name: " + name + " ; Expression: " + expStr);
}

数式を式ツリーに変換

次のサンプルコードは、formulaToExpressionメソッドを使用して数式を式ツリーに変換します。

JavaScript
コードのコピー
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), {
  sheetCount: 1
});
sheet = spread.getSheet(0);
sheet.setValue(0, 0, 1);
sheet.setValue(0, 1, 2);
sheet.setValue(0, 2, 3);
sheet.getCell(4, 4).formula("=SUM(A1:C1)");
var formula = sheet.getFormula(4, 4);
var expression = GC.Spread.Sheets.CalcEngine.formulaToExpression(sheet, formula, 0, 0);
console.log("Function Name is: " + expression.functionName);

数式をセル範囲に変換

次のサンプルコードは、formulaToRangesメソッドを使用して数式文字列をセル範囲に変換します。

JavaScript
コードのコピー
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), {
  sheetCount: 1
});
sheet = spread.getSheet(0);
//formulaToRangesメソッドを使用してセル範囲を作成します。
cellRanges = GC.Spread.Sheets.CalcEngine.formulaToRanges(sheet, 'B3:D5', 0, 0);
//セル範囲の行または列のインデックス、および行数または列数を数式に取得します。
console.log("Starting Row Index of cell range 'B3:D5' is " + cellRanges[0].ranges[0].row);
console.log("Starting Column Index of cell range 'B3:D5' is " + cellRanges[0].ranges[0].col);
console.log("RowCount of cell range 'B3:D5' is " + cellRanges[0].ranges[0].rowCount);
console.log("ColCount of cell range 'B3:D5' is " + cellRanges[0].ranges[0].colCount);

数式の評価

次のサンプルコードは、evaluateFormulaメソッドを使用して数式を評価します。

JavaScript
コードのコピー
var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), {
  sheetCount: 1
});
sheet = spread.getSheet(0);
sheet.setValue(0, 0, 1);
sheet.setValue(1, 0, 2);
//evaluateFormulaメソッドを使用してセルに数式を設定せずに数式を評価します。
var result = GC.Spread.Sheets.CalcEngine.evaluateFormula(sheet, "SUM(A1:A2)", 0, 0);
console.log("SUM(A1:A2) = " + result);

goalSeek メソッド

goalSeek メソッドを使用してあるセルに含まれる数式で目的の結果を得るために別のセルに代入すべき値を探索できます。

JavaScript
コードのコピー
// 次のサンプルコードは、目標値探索の使用方法を示します。
// ローン額が10000、返済期間が18か月、毎月の返済額が600のローンを組むために必要な金利を求めます。
sheet.setValue(0, 1, 10000); // ローン額
sheet.setValue(1, 1, 18); // 返済月数
sheet.setFormatter(2, 1, "0%"); // 金利
sheet.setFormatter(3, 1, "0.00");
sheet.setFormula(3, 1, "PMT(B3/12,B2,B1)"); // 返済額
GC.Spread.Sheets.CalcEngine.goalSeek(sheet, 2, 1, sheet, 3, 1, -600); // B3の結果は10%