mirror of
https://github.com/storytold/gridcraft.git
synced 2026-10-24 10:46:50 -06:00
A formula read with `cm` (Excel's XLDAPR dynamic-array record in xl/metadata.xml) now carries `Formula::dynamic`, and the writer keeps the `cm` and the metadata part for it even when the formula returns one value and the export shape analysis would not need array evaluation. Before, such formulas were saved as legacy formulas, so Excel recalculated some of them with implicit intersection (SUMPRODUCT(IFERROR(range/range,0)) changed value), and workbooks whose every dynamic formula was scalar lost xl/metadata.xml altogether. The mark survives moves, row and column insertion or deletion, sheet and name renames and LAMBDA call-case fixes; retyping a formula drops it and the writer decides from the formula's shape, as before. It is serialized only when set, so saved documents without it are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>