作成日: 2026/03/30 最終更新日: 2026/03/30
文書種別
不具合
状況
回避方法あり
詳細
行/列ヘッダに数式を設定した状態で、行/列を選択してドラッグ&ドロップで移動してもヘッダの数式が更新されず、コピー元と同じ結果が表示されます。
回避方法
以下のサンプルコードのように、移動前にヘッダの数式を保存し、移動後に再適用して数式を更新することが可能です。
const originalMoveFormula = GC.Spread.Sheets.CalcEngine.CalcOperatorAdjustor.moveFormula;
GC.Spread.Sheets.CalcEngine.CalcOperatorAdjustor.moveFormula = function (src, fromRow, fromColumn, dest, toRow, toColumn, rowCount, columnCount, tableExpand) {
let formulasToRestore = [];
if (columnCount < 0 && src === dest) {
let headerCount = src.getColumnCount(2);
for (let r = fromRow; r < fromRow + rowCount; r++) {
for (let c = 0; c < headerCount; c++) {
let f = src.getFormula(r, c, 2);
if (f) {
formulasToRestore.push({
row: r - fromRow + toRow,
col: c,
formula: f,
area: 2
});
}
}
}
}
originalMoveFormula.call(this, src, fromRow, fromColumn, dest, toRow, toColumn, rowCount, columnCount, tableExpand);
formulasToRestore.forEach((item) => {
src.setFormula(item.row, item.col, item.formula, item.area);
});
}
しかしながら、この回避方法は数式をそのままコピーしてヘッダに再設定するため、次の制限事項がありますので、あらかじめご留意ください。
- Undoを実行した際に移動先の行ヘッダに数式が残ったままになる
- セル参照を含む数式の場合、移動後に参照先が自動調整されない