MAX()、ROW関数を利用した数式計算が正常に動作しない

文書番号 : 40129     文書種別 : 不具合     登録日 : 2017/03/10     最終更新日 : 2017/03/29
文書を印刷する
対象製品
SpreadJS 9J
発生環境
9.20161.0
状況
修正済み
詳細
MAX()、ROW関数を利用した数式計算が正常に動作しない現象が発生します。

【再現方法】
1.下記の再現コードを実行します

【動作結果】
数式が設定されたセルB2での計算では"8"が期待されますが、本現象では"0"になります。

【再現コード】
window.onload = function(){
  var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  var sheet = spread.getActiveSheet();

  sheet.setValue(2,0,1);
  sheet.setValue(3,0,2);
  sheet.setValue(4,0,3);
  sheet.setValue(5,0,4);
  sheet.setValue(6,0,'A');
  sheet.setValue(7,0,'B');
  sheet.setFormula(1,1,'=MAX(INDEX((A:A<>"")*ROW(A:A),))');  
};
回避方法
SpreadJS 9J SP2(Ver.9.20171.0)で修正済み
SpreadJS 9J SP2(Ver.9.20171.0)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

配列数式を利用して、同様の結果を返す数式を設定することで現象の回避が可能です。

【再現コードへの回避方法適用例】
window.onload = function(){
  var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  var sheet = spread.getActiveSheet();

  sheet.setValue(2,0,1);
  sheet.setValue(3,0,2);
  sheet.setValue(4,0,3);
  sheet.setValue(5,0,4);
  sheet.setValue(6,0,'A');
  sheet.setValue(7,0,'B');
  //sheet.setFormula(1,1,'=MAX(INDEX((A:A<>"")*ROW(A:A),))');  

  //回避策 - 配列数式を使用して同様の結果を取得します
  sheet.setArrayFormula(1, 1, 1, 1,'MAX((A:A<>"")*ROW(A:A))');
};