作成日: 2025/10/23 最終更新日: 2026/02/04
文書種別
不具合
状況
修正済み
詳細
FlexSheetで「A$1」のような混合型セル参照を設定したセルに対して、以下の操作をした場合に意図した結果になりません。
- オートフィル:セルをドラッグした際に参照範囲が正しく調整されない。
- コピー&ペースト:数式参照の更新が正しく行われない。
- 行/列のドラッグ&ドロップ: 移動した行/列を参照する数式が正しく更新されない場合がある。
- 行または列の挿入/削除:混合参照の場合、適切に調整されない可能性がある。
- 数式の評価:混合参照の場合、誤った結果や#REF!エラーが発生する可能性がある。
- INDIRECT関数: =INDIRECT("A$1") または =INDIRECT("$A1") が正しく解決されない場合がある。
- ファイルのインポート/エクスポート:混合参照を含むExcelファイルをインポートすると、計算結果が正しくなくなる場合がる。
回避方法
この問題はバージョン5.20252.44で修正されました。
修正版を適用しない場合の回避方法は次の通りです。
_parseCellRange メソッド(内部メソッド)を以下のように書き換えます。
import * as wjFlexGrid from '@mescius/wijmo.grid';
import * as wjFlexSheet from '@mescius/wijmo.grid.sheet';
wjFlexSheet._CalcEngine.prototype._parseCellRange = function (e) {
var t, o, i, n, l = -1, r = -1, s = !1, a = !1;
for (t = 0; t < e.length; t++)
// if ("$" !== (i = e[t]) || s) {
if ("$" !== (i = e[t]) || s || l > 0) {
if (!((i >= "a" && i <= "z") || (i >= "A" && i <= "Z"))) break;
l < 0 && (l = 0);
l = 26 * l + (i.toUpperCase().charCodeAt(0) - "A".charCodeAt(0) + 1);
} else s = !0;
for (; t < e.length; t++)
if ("$" !== (i = e[t]) || a) {
if (!(i >= "0" && i <= "9")) break;
r < 0 && (r = 0);
r = 10 * r + (+i - 0);
} else a = !0;
if (t < e.length) return null;
if (r > -1 && l > -1) {
if (0 === r) throw new wjFlexSheet.NameError(wjFlexSheet._ErrorMessages.InvalidCellRef);
o = new wjFlexGrid.CellRange(r - 1, l - 1);
} else if (-1 === l) {
n = !0;
o = new wjFlexGrid.CellRange(r - 1, 0);
} else if (-1 === r) {
n = !1;
o = new wjFlexGrid.CellRange(0, l - 1);
}
return {
cellRange: o,
absRow: a,
absCol: s,
isWholeRow: n,
};
};