HotXLS Docs

Text and statistical array arguments

Text and statistical collectors accept supported calculated arrays, ordinary references and defined names through a typed row-major operand walker; scalar arguments retain each function's native coercion rules

Text composition

Sheet.Cells[1, 1].Formula := 'TEXTJOIN(",",TRUE,SEQUENCE(3))';
Sheet.Cells[2, 1].Formula := 'CONCAT(SEQUENCE(2,2))';

TEXTJOIN and CONCAT traverse calculated arrays and supported references in row-major order, preserve nesting and typed values, and propagate an encountered error instead of converting it into ordinary text

TEXTJOIN applies its delimiter and ignore-empty options across the complete sequence; omitted and blank values follow the same option contract, and the result remains bounded to 32767 characters

The classic BIFF formula contract remains distinct: CONCAT is not a BIFF-native function, while supported classic statistical CSE formulas remain available

Statistical composition

Sheet.Cells[3, 1].Formula := 'MEDIAN(SEQUENCE(4))';
Sheet.Cells[4, 1].Formula := 'PERCENTILE.EXC(SEQUENCE(5),0.5)';
Sheet.Cells[5, 1].Formula := 'COVARIANCE.P(SEQUENCE(3),SEQUENCE(3)*2)';

Supported value-array consumers include MEDIAN, LARGE, SMALL, PERCENTILE.INC, PERCENTILE.EXC, QUARTILE.INC, QUARTILE.EXC, PERCENTRANK.INC, PERCENTRANK.EXC, MODE.MULT and COVARIANCE.P, including supported legacy percentile, quartile and percent-rank aliases

Numeric collectors ignore Boolean and text entries inside arrays and references where the native function does so; directly supplied Boolean or numeric-text scalars can follow different coercion rules, and MODE.MULT ignores text and Boolean values even as direct scalar arguments

COVARIANCE.P pairs operands by their original positions and includes a position only when both values are numeric; independently compacting each operand would pair unrelated entries and produce an incorrect result

LARGE rounds a supported fractional rank upward and SMALL truncates it; ranks below one reject with #NUM!, and percentile-exclusive endpoints equal to the supported minimum or maximum rank remain valid

Even-count MEDIAN avoids same-sign sum overflow for finite inputs; extreme opposed values retain the verified native numerical-error behavior rather than producing an invalid floating-point result

Functions that require references

RANK, RANK.EQ and RANK.AVG retain true-reference semantics for their reference argument, including supported reference-producing INDEX expressions

A literal or computed value array is not substituted for that argument, and a defined name evaluating to SEQUENCE remains a value array rather than becoming a range reference

Names, dependency changes and spills

Absolute defined-name sources and nested calculated names track source dependencies, resize and survive supported save/reopen cycles; relative references are resolved at each consumer position, so use an absolute reference when a name must retain one fixed source cell

Numbers = SEQUENCE(Arrays!$A$1)

MODE.MULT retains normal spill resizing, obstruction and reopening behavior; supported classic CSE statistical formulas keep their fixed-output contract

Resource limits and boundaries

Operand traversal, numeric collection, sorting and result construction honor the active calculation step budget and FormulaArrayMemoryLimit; resource exhaustion follows the existing calculation diagnostic contract

These collectors do not make every function a value-array consumer, change the storage format's formula capabilities or relax existing unsupported external-reference and spill boundaries