HotXLS Docs

Text and statistical array arguments

Text and statistical collectors take supported calculated arrays, ordinary references and defined names through a typed row-major operand walker; scalar arguments keep 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 any error they meet instead of converting it into ordinary text

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

The classic BIFF formula contract stays distinct: CONCAT is not a BIFF-native function, whilst 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, supported legacy percentile, quartile and percent-rank aliases included

Numeric collectors ignore Boolean and text entries inside arrays and references wherever 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 takes in a position only where both values are numeric; compacting each operand independently would pair unrelated entries and produce a wrong result

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

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

Functions that require references

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

A literal or computed value array is never substituted for that argument, and a defined name evaluating to SEQUENCE stays a value array rather than turning into 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 resolve afresh at each consumer position, so use an absolute reference where a name must hold on to one fixed source cell

Numbers = SEQUENCE(Arrays!$A$1)

MODE.MULT keeps its normal spill resizing, obstruction and reopening behaviour; supported classic CSE statistical formulas hold to their fixed-output contract

Resource limits and boundaries

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

These collectors turn no function into a value-array consumer, change nothing about the storage format's formula capabilities and relax none of the existing unsupported external-reference and spill boundaries