recalcAll(true)を実行すると、TRANSPOSE関数の参照範囲が不正に変更される
対象製品
SpreadJS(Ver.10.x.x -)
状況
修正済み
詳細
recalcAllメソッドの引数にtrueを指定して再計算を実行した場合、TRANSPOSE関数で参照しているセル範囲が不正に変更されます。
再現手順
1.Spreadとボタンを配置したHTMLファイルを用意する
2.1.のファイルに下記のサンプルコードを追加する
★サンプルコード(JavaScript)
3. ボタンを押下して、再計算を実行する
→下記のようにTRANSPOSE関数の参照範囲が不正に変更されてしまいます
再計算実行前:TRANSPOSE(B5:B10)
再計算実行後:TRANSPOSE(L5:L10)
再現手順
1.Spreadとボタンを配置したHTMLファイルを用意する
2.1.のファイルに下記のサンプルコードを追加する
★サンプルコード(JavaScript)
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.sheets[0];
sheet.setValue(4, 1, 1);
sheet.setValue(5, 1, 2);
sheet.setValue(6, 1, 3);
sheet.setValue(7, 1, 4);
sheet.setValue(8, 1, 5);
sheet.setArrayFormula(4, 3, 1, 5, "TRANSPOSE(B5:B10)");
document.getElementById("button").onclick = function () {
sheet.recalcAll(true);
}
var sheet = spread.sheets[0];
sheet.setValue(4, 1, 1);
sheet.setValue(5, 1, 2);
sheet.setValue(6, 1, 3);
sheet.setValue(7, 1, 4);
sheet.setValue(8, 1, 5);
sheet.setArrayFormula(4, 3, 1, 5, "TRANSPOSE(B5:B10)");
document.getElementById("button").onclick = function () {
sheet.recalcAll(true);
}
3. ボタンを押下して、再計算を実行する
→下記のようにTRANSPOSE関数の参照範囲が不正に変更されてしまいます
再計算実行前:TRANSPOSE(B5:B10)
再計算実行後:TRANSPOSE(L5:L10)
回避方法
SpreadJS (Ver.13.0.4)で修正済み
Ver.13.0.4より前のバージョンでは次の方法で回避可能です。
以下の2つの方法のいずれかで回避することが可能です。
回避方法1. 引数を指定せずにrecalAllメソッドを実行する
★サンプルコード(JavaScript)
回避方法2. TRANSPOSE関数のセル参照を絶対参照で指定する
★サンプルコード(JavaScript)
Ver.13.0.4より前のバージョンでは次の方法で回避可能です。
以下の2つの方法のいずれかで回避することが可能です。
回避方法1. 引数を指定せずにrecalAllメソッドを実行する
★サンプルコード(JavaScript)
//sheet.recalcAll(true);
//引数を指定しない
sheet.recalcAll();
//引数を指定しない
sheet.recalcAll();
回避方法2. TRANSPOSE関数のセル参照を絶対参照で指定する
★サンプルコード(JavaScript)
//sheet.setArrayFormula(4, 3, 1, 5, "TRANSPOSE(B5:B10)");
//TRANSPOSE関数のセル参照を絶対参照で指定する
sheet.setArrayFormula(4, 3, 1, 5, "TRANSPOSE($B$5:$B$10)");
//TRANSPOSE関数のセル参照を絶対参照で指定する
sheet.setArrayFormula(4, 3, 1, 5, "TRANSPOSE($B$5:$B$10)");