INDIRECT関数とADDRESS関数と併用すると計算エラーになる

文書番号 : 39488     文書種別 : 不具合     登録日 : 2016/07/27     最終更新日 : 2016/07/27
文書を印刷する
対象製品
SpreadJS 9J
状況
修正済み
詳細
INDIRECT関数の引数にADDRESS関数を設定した場合に、計算に失敗する現象が発生します。

【現象再現手順】
--------------------------------------------------
1. 以下の再現コードを実行します
2. A2セルの計算結果がエラーとなります

-ダイアログが崩れた状態で表示されます
--------------------------------------------------

【現象再現コード】
--------------------------------------------------
//下記のコードはHTML上のDOM要素、"#ss"に対し、
//SPREADを展開することを前提としたコードです。
$(function () {
  var spreadNS = $.wijmo.wijspread;
  var lastActiveSpread = "0";

  $(document).ready(function () {
    $("#ss").wijspread({ sheetCount: 2 });
    var spread = $("#ss").wijspread("spread");
    var sheet = spread.getSheet(0);

    initSpread(spread);
  });

  function initSpread(spread) {
    var sheet = spread.getSheet(0);

    sheet.suspendCalcService(false);

    sheet.setRowCount(10);
    sheet.setColumnCount(10);
    sheet.setColumnWidth(0, 100, spreadNS.SheetArea.rowHeader);
    sheet.setColumnHeaderAutoText($.wijmo.wijspread.HeaderAutoText.blank);

    sheet.setRowCount(1, $.wijmo.wijspread.SheetArea.colHeader);

    sheet.isPaintSuspended(true);

    sheet.setValue(0, 0, 1);
    sheet.setValue(0, 1, 2);
    sheet.setValue(0, 2, 3);

    // 計算に失敗し、エラーとなります
    var formula = "=SUM(INDIRECT(ADDRESS(1,1)):INDIRECT(ADDRESS(1,5)))"

    sheet.setFormula(1, 0, formula);
    sheet.setFormula(1, 1, "=SUM(A1:E1)");
    sheet.setValue(2, 0, "1行目の値を下に表示する");
    sheet.setColumnWidth(0, 200);
    
    sheet.setFormula(3, 0, "=INDIRECT(ADDRESS(1,1))");
    sheet.setFormula(3, 1, "=INDIRECT(ADDRESS(1,2))");
    sheet.setFormula(3, 2, "=INDIRECT(ADDRESS(1,3))");
    sheet.setFormula(3, 3, "=INDIRECT(ADDRESS(1,4))");
    sheet.setFormula(3, 4, "=INDIRECT(ADDRESS(1,5))");

    sheet.allowUndo(false);
    sheet.resumeCalcService(true);
    sheet.isPaintSuspended(false);
  };
});
--------------------------------------------------
回避方法
SpreadJS 9J SP1(Ver.3.20152.21)で修正済み