Supported functions
The calculation engine implements 502 functions. 380 of them appear in tests whose expected values were recorded from real Excel (src/core/xlsx/formula/__fixtures__); the rest are covered by unit tests only, with expected values worked out by hand or from documentation. A newly entered unsupported function returns #NAME?. On initial loading, the engine keeps cached results of unsupported formulas when available; it cannot refresh those results.
Verification: Excel means at least one recorded Excel result uses the function (it may be nested in a larger formula, and one case does not prove every argument combination); Unit means unit tests only.
Unsupported integrations
These functions are not calculated. No network request, external process or AI call is made.
| Functions | Missing capability |
|---|---|
CUBEKPIMEMBER, CUBEMEMBER, CUBEMEMBERPROPERTY, CUBERANKEDMEMBER, CUBESET, CUBESETCOUNT, CUBEVALUE | OLAP connection and query execution. |
WEBSERVICE | HTTP retrieval. |
STOCKHISTORY | Historical market data service. |
RTD | Real-time data provider. |
IMAGE | Formula-driven image retrieval and in-cell image results. |
COPILOT, TRANSLATE, DETECTLANGUAGE | AI and language services. |
INFO, ASC, DBCS, JIS, PHONETIC and EUROCONVERT remain unimplemented too.
Database
| Function | Syntax | Verification | Notes |
|---|---|---|---|
DAVERAGE | DAVERAGE(database, field, criteria) | Unit | |
DCOUNT | DCOUNT(database, field, criteria) | Unit | |
DCOUNTA | DCOUNTA(database, field, criteria) | Unit | |
DGET | DGET(database, field, criteria) | Unit | |
DMAX | DMAX(database, field, criteria) | Unit | |
DMIN | DMIN(database, field, criteria) | Unit | |
DPRODUCT | DPRODUCT(database, field, criteria) | Unit | |
DSTDEV | DSTDEV(database, field, criteria) | Unit | |
DSTDEVP | DSTDEVP(database, field, criteria) | Unit | |
DSUM | DSUM(database, field, criteria) | Unit | |
DVAR | DVAR(database, field, criteria) | Unit | |
DVARP | DVARP(database, field, criteria) | Unit |
Date & Time
| Function | Syntax | Verification | Notes |
|---|---|---|---|
DATE | DATE(year, month, day) | Excel | |
DATEDIF | DATEDIF(start_date, end_date, unit) | Excel | |
DATEVALUE | DATEVALUE(date_text) | Excel | |
DAY | DAY(serial_number) | Excel | |
DAYS | DAYS(end_date, start_date) | Excel | |
DAYS360 | DAYS360(start_date, end_date, [method]) | Excel | |
EDATE | EDATE(start_date, months) | Excel | |
EOMONTH | EOMONTH(start_date, months) | Excel | |
HOUR | HOUR(serial_number) | Excel | |
ISOWEEKNUM | ISOWEEKNUM(date) | Excel | |
MINUTE | MINUTE(serial_number) | Excel | |
MONTH | MONTH(serial_number) | Excel | |
NETWORKDAYS | NETWORKDAYS(start_date, end_date, [holidays]) | Excel | |
NETWORKDAYS.INTL | NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays]) | Excel | |
NOW | NOW() | Unit | |
SECOND | SECOND(serial_number) | Excel | |
TIME | TIME(hour, minute, second) | Excel | |
TIMEVALUE | TIMEVALUE(time_text) | Excel | |
TODAY | TODAY() | Unit | |
WEEKDAY | WEEKDAY(serial_number, [return_type]) | Excel | |
WEEKNUM | WEEKNUM(serial_number, [return_type]) | Excel | |
WORKDAY | WORKDAY(start_date, days, [holidays]) | Excel | |
WORKDAY.INTL | WORKDAY.INTL(start_date, days, [weekend], [holidays]) | Excel | |
YEAR | YEAR(serial_number) | Excel | |
YEARFRAC | YEARFRAC(start_date, end_date, [basis]) | Excel |
Engineering
| Function | Syntax | Verification | Notes |
|---|---|---|---|
BESSELI | BESSELI(x, n) | Unit | |
BESSELJ | BESSELJ(x, n) | Unit | About 1e-7 from the value Microsoft documents for some arguments. |
BESSELK | BESSELK(x, n) | Unit | |
BESSELY | BESSELY(x, n) | Unit | |
BIN2DEC | BIN2DEC(number) | Excel | |
BIN2HEX | BIN2HEX(number, [places]) | Excel | |
BIN2OCT | BIN2OCT(number, [places]) | Excel | |
BITAND | BITAND(number1, number2) | Excel | |
BITLSHIFT | BITLSHIFT(number, shift_amount) | Excel | |
BITOR | BITOR(number1, number2) | Excel | |
BITRSHIFT | BITRSHIFT(number, shift_amount) | Excel | |
BITXOR | BITXOR(number1, number2) | Excel | |
COMPLEX | COMPLEX(real_num, i_num, [suffix]) | Unit | |
CONVERT | CONVERT(number, from_unit, to_unit) | Unit | |
DEC2BIN | DEC2BIN(number, [places]) | Excel | |
DEC2HEX | DEC2HEX(number, [places]) | Excel | |
DEC2OCT | DEC2OCT(number, [places]) | Excel | |
DELTA | DELTA(number1, [number2]) | Excel | |
ERF | ERF(lower_limit, [upper_limit]) | Excel | |
ERF.PRECISE | ERF.PRECISE(x) | Excel | |
ERFC | ERFC(x) | Excel | |
ERFC.PRECISE | ERFC.PRECISE(x) | Excel | |
GESTEP | GESTEP(number, [step]) | Excel | |
HEX2BIN | HEX2BIN(number, [places]) | Excel | |
HEX2DEC | HEX2DEC(number) | Excel | |
HEX2OCT | HEX2OCT(number, [places]) | Unit | |
IMABS | IMABS(inumber) | Unit | |
IMAGINARY | IMAGINARY(inumber) | Unit | |
IMARGUMENT | IMARGUMENT(inumber) | Unit | |
IMCONJUGATE | IMCONJUGATE(inumber) | Unit | |
IMCOS | IMCOS(inumber) | Unit | |
IMCOSH | IMCOSH(inumber) | Unit | |
IMCOT | IMCOT(inumber) | Unit | |
IMCSC | IMCSC(inumber) | Unit | |
IMCSCH | IMCSCH(inumber) | Unit | |
IMDIV | IMDIV(inumber1, inumber2) | Unit | |
IMEXP | IMEXP(inumber) | Unit | |
IMLN | IMLN(inumber) | Unit | |
IMLOG10 | IMLOG10(inumber) | Unit | |
IMLOG2 | IMLOG2(inumber) | Unit | |
IMPOWER | IMPOWER(inumber, number) | Unit | |
IMPRODUCT | IMPRODUCT(inumber1, [inumber2], ...) | Unit | |
IMREAL | IMREAL(inumber) | Unit | |
IMSEC | IMSEC(inumber) | Unit | |
IMSECH | IMSECH(inumber) | Unit | |
IMSIN | IMSIN(inumber) | Unit | |
IMSINH | IMSINH(inumber) | Unit | |
IMSQRT | IMSQRT(inumber) | Unit | |
IMSUB | IMSUB(inumber1, inumber2) | Unit | |
IMSUM | IMSUM(inumber1, [inumber2], ...) | Unit | |
IMTAN | IMTAN(inumber) | Unit | |
OCT2BIN | OCT2BIN(number, [places]) | Excel | |
OCT2DEC | OCT2DEC(number) | Excel | |
OCT2HEX | OCT2HEX(number, [places]) | Excel |
Financial
| Function | Syntax | Verification | Notes |
|---|---|---|---|
ACCRINT | ACCRINT(issue, first_interest, settlement, rate, par, frequency, [basis], [calc_method]) | Unit | |
ACCRINTM | ACCRINTM(issue, settlement, rate, [par], [basis]) | Unit | |
AMORDEGRC | AMORDEGRC(cost, date_purchased, first_period, salvage, period, rate, [basis]) | Unit | |
AMORLINC | AMORLINC(cost, date_purchased, first_period, salvage, period, rate, [basis]) | Excel | |
COUPDAYBS | COUPDAYBS(settlement, maturity, frequency, [basis]) | Unit | |
COUPDAYS | COUPDAYS(settlement, maturity, frequency, [basis]) | Unit | |
COUPDAYSNC | COUPDAYSNC(settlement, maturity, frequency, [basis]) | Unit | |
COUPNCD | COUPNCD(settlement, maturity, frequency, [basis]) | Unit | |
COUPNUM | COUPNUM(settlement, maturity, frequency, [basis]) | Unit | |
COUPPCD | COUPPCD(settlement, maturity, frequency, [basis]) | Unit | |
CUMIPMT | CUMIPMT(rate, nper, pv, start_period, end_period, type) | Excel | |
CUMPRINC | CUMPRINC(rate, nper, pv, start_period, end_period, type) | Excel | |
DB | DB(cost, salvage, life, period, [month]) | Excel | |
DDB | DDB(cost, salvage, life, period, [factor]) | Excel | |
DISC | DISC(settlement, maturity, pr, redemption, [basis]) | Unit | |
DOLLARDE | DOLLARDE(fractional_dollar, fraction) | Excel | |
DOLLARFR | DOLLARFR(decimal_dollar, fraction) | Excel | |
DURATION | DURATION(settlement, maturity, coupon, yld, frequency, [basis]) | Unit | |
EFFECT | EFFECT(nominal_rate, npery) | Excel | |
FV | FV(rate, nper, pmt, [pv], [type]) | Excel | |
FVSCHEDULE | FVSCHEDULE(principal, schedule) | Excel | |
INTRATE | INTRATE(settlement, maturity, investment, redemption, [basis]) | Unit | |
IPMT | IPMT(rate, per, nper, pv, [fv], [type]) | Excel | |
IRR | IRR(values, [guess]) | Excel | |
ISPMT | ISPMT(rate, per, nper, pv) | Excel | |
MDURATION | MDURATION(settlement, maturity, coupon, yld, frequency, [basis]) | Unit | |
MIRR | MIRR(values, finance_rate, reinvest_rate) | Excel | |
NOMINAL | NOMINAL(effect_rate, npery) | Excel | |
NPER | NPER(rate, pmt, pv, [fv], [type]) | Excel | |
NPV | NPV(rate, value1, [value2], ...) | Excel | |
ODDFPRICE | ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis]) | Unit | Quasi-coupon method; long odd first periods not checked against Excel. |
ODDFYIELD | ODDFYIELD(settlement, maturity, issue, first_coupon, rate, pr, redemption, frequency, [basis]) | Unit | Quasi-coupon method; long odd first periods not checked against Excel. |
ODDLPRICE | ODDLPRICE(settlement, maturity, last_interest, rate, yld, redemption, frequency, [basis]) | Unit | Quasi-coupon method; not checked against Excel. |
ODDLYIELD | ODDLYIELD(settlement, maturity, last_interest, rate, pr, redemption, frequency, [basis]) | Unit | Quasi-coupon method; not checked against Excel. |
PDURATION | PDURATION(rate, pv, fv) | Excel | |
PMT | PMT(rate, nper, pv, [fv], [type]) | Excel | |
PPMT | PPMT(rate, per, nper, pv, [fv], [type]) | Excel | |
PRICE | PRICE(settlement, maturity, rate, yld, redemption, frequency, [basis]) | Unit | |
PRICEDISC | PRICEDISC(settlement, maturity, discount, redemption, [basis]) | Unit | |
PRICEMAT | PRICEMAT(settlement, maturity, issue, rate, yld, [basis]) | Unit | |
PV | PV(rate, nper, pmt, [fv], [type]) | Excel | |
RATE | RATE(nper, pmt, pv, [fv], [type], [guess]) | Excel | |
RECEIVED | RECEIVED(settlement, maturity, investment, discount, [basis]) | Unit | |
RRI | RRI(nper, pv, fv) | Excel | |
SLN | SLN(cost, salvage, life) | Excel | |
SYD | SYD(cost, salvage, life, per) | Excel | |
TBILLEQ | TBILLEQ(settlement, maturity, discount) | Unit | |
TBILLPRICE | TBILLPRICE(settlement, maturity, discount) | Unit | |
TBILLYIELD | TBILLYIELD(settlement, maturity, pr) | Unit | |
VDB | VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch]) | Unit | |
XIRR | XIRR(values, dates, [guess]) | Excel | |
XNPV | XNPV(rate, values, dates) | Excel | |
YIELD | YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis]) | Unit | |
YIELDDISC | YIELDDISC(settlement, maturity, pr, redemption, [basis]) | Unit | |
YIELDMAT | YIELDMAT(settlement, maturity, issue, rate, pr, [basis]) | Unit |
Information
| Function | Syntax | Verification | Notes |
|---|---|---|---|
CELL | CELL(info_type, [reference]) | Excel | |
ERROR.TYPE | ERROR.TYPE(error_val) | Excel | |
ISBLANK | ISBLANK(value) | Excel | |
ISERR | ISERR(value) | Excel | |
ISERROR | ISERROR(value) | Excel | |
ISEVEN | ISEVEN(number) | Excel | |
ISFORMULA | ISFORMULA(reference) | Excel | |
ISLOGICAL | ISLOGICAL(value) | Excel | |
ISNA | ISNA(value) | Excel | |
ISNONTEXT | ISNONTEXT(value) | Excel | |
ISNUMBER | ISNUMBER(value) | Excel | |
ISODD | ISODD(number) | Excel | |
ISREF | ISREF(value) | Excel | |
ISTEXT | ISTEXT(value) | Excel | |
N | N(value) | Excel | |
NA | NA() | Excel | |
SHEET | SHEET([value]) | Excel | |
SHEETS | SHEETS([reference]) | Excel | |
TYPE | TYPE(value) | Excel |
Logical
| Function | Syntax | Verification | Notes |
|---|---|---|---|
AND | AND(logical1, [logical2], ...) | Excel | |
BYCOL | BYCOL(array, lambda) | Excel | |
BYROW | BYROW(array, lambda) | Excel | |
FALSE | FALSE() | Excel | |
IF | IF(logical_test, [value_if_true], [value_if_false]) | Excel | |
IFERROR | IFERROR(value, value_if_error) | Excel | |
IFNA | IFNA(value, value_if_na) | Excel | |
IFS | IFS(logical_test1, value_if_true1, ...) | Excel | |
ISOMITTED | ISOMITTED(argument) | Unit | |
LAMBDA | LAMBDA([parameter1, ...], calculation) | Excel | |
LET | LET(name1, value1, [name2, value2, ...], calculation) | Excel | |
MAKEARRAY | MAKEARRAY(rows, columns, lambda) | Excel | |
MAP | MAP(array1, ..., lambda) | Excel | |
NOT | NOT(logical) | Excel | |
OR | OR(logical1, [logical2], ...) | Excel | |
REDUCE | REDUCE([initial_value], array, lambda) | Excel | |
SCAN | SCAN([initial_value], array, lambda) | Excel | |
SWITCH | SWITCH(expression, value1, result1, ..., [default]) | Excel | |
TRUE | TRUE() | Excel | |
XOR | XOR(logical1, [logical2], ...) | Excel |
Lookup & Reference
| Function | Syntax | Verification | Notes |
|---|---|---|---|
ADDRESS | ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text]) | Excel | |
ANCHORARRAY | ANCHORARRAY(reference) | Unit | |
AREAS | AREAS(reference) | Excel | |
CHOOSE | CHOOSE(index_num, value1, [value2], ...) | Excel | |
CHOOSECOLS | CHOOSECOLS(array, col_num1, ...) | Excel | |
CHOOSEROWS | CHOOSEROWS(array, row_num1, ...) | Excel | |
COLUMN | COLUMN([reference]) | Excel | |
COLUMNS | COLUMNS(array) | Excel | |
DROP | DROP(array, rows, [columns]) | Excel | |
EXPAND | EXPAND(array, rows, [columns], [pad_with]) | Excel | |
FILTER | FILTER(array, include, [if_empty]) | Excel | |
FORMULATEXT | FORMULATEXT(reference) | Excel | |
GETPIVOTDATA | GETPIVOTDATA(data_field, pivot_table, [field1, item1], ...) | Unit | Reads this editor's worksheet-range pivots; #REF! for anything else. |
GROUPBY | GROUPBY(row_fields, values, function, [field_headers], [total_depth], [sort_order], [filter_array], [field_relationship]) | Unit | Subset: one aggregating function, grand totals only, flat output. |
HLOOKUP | HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup]) | Excel | |
HSTACK | HSTACK(array1, [array2], ...) | Excel | |
HYPERLINK | HYPERLINK(link_location, [friendly_name]) | Excel | |
INDEX | INDEX(array, row_num, [column_num], [area_num]) | Excel | |
INDIRECT | INDIRECT(ref_text, [a1]) | Excel | |
LOOKUP | LOOKUP(lookup_value, lookup_vector, [result_vector]) | Excel | |
MATCH | MATCH(lookup_value, lookup_array, [match_type]) | Excel | |
OFFSET | OFFSET(reference, rows, cols, [height], [width]) | Excel | |
PIVOTBY | PIVOTBY(row_fields, col_fields, values, function, [field_headers], [row_total_depth], [row_sort_order], [col_total_depth], [col_sort_order], [filter_array], [relative_to]) | Unit | Subset: one aggregating function, one column field, grand totals only. |
RANDARRAY | RANDARRAY([rows], [columns], [min], [max], [integer]) | Excel | |
ROW | ROW([reference]) | Excel | |
ROWS | ROWS(array) | Excel | |
SEQUENCE | SEQUENCE(rows, [columns], [start], [step]) | Excel | |
SINGLE | SINGLE(value) | Unit | |
SORT | SORT(array, [sort_index], [sort_order], [by_col]) | Excel | |
SORTBY | SORTBY(array, by_array1, [sort_order1], ...) | Excel | |
TAKE | TAKE(array, rows, [columns]) | Excel | |
TOCOL | TOCOL(array, [ignore], [scan_by_column]) | Excel | |
TOROW | TOROW(array, [ignore], [scan_by_column]) | Excel | |
TRANSPOSE | TRANSPOSE(array) | Excel | |
TRIMRANGE | TRIMRANGE(range, [trim_rows], [trim_cols]) | Unit | Returns the trimmed values as an array rather than a reference. |
UNIQUE | UNIQUE(array, [by_col], [exactly_once]) | Excel | |
VLOOKUP | VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup]) | Excel | |
VSTACK | VSTACK(array1, [array2], ...) | Excel | |
WRAPCOLS | WRAPCOLS(vector, wrap_count, [pad_with]) | Excel | |
WRAPROWS | WRAPROWS(vector, wrap_count, [pad_with]) | Excel | |
XLOOKUP | XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode]) | Excel | |
XMATCH | XMATCH(lookup_value, lookup_array, [match_mode], [search_mode]) | Excel |
Math & Trig
| Function | Syntax | Verification | Notes |
|---|---|---|---|
ABS | ABS(number) | Excel | |
ACOS | ACOS(number) | Excel | |
ACOSH | ACOSH(number) | Excel | |
ACOT | ACOT(number) | Excel | |
ACOTH | ACOTH(number) | Excel | |
AGGREGATE | AGGREGATE(function_num, options, ref1, ...) | Excel | |
ARABIC | ARABIC(text) | Excel | |
ASIN | ASIN(number) | Excel | |
ASINH | ASINH(number) | Excel | |
ATAN | ATAN(number) | Excel | |
ATAN2 | ATAN2(x_num, y_num) | Excel | |
ATANH | ATANH(number) | Excel | |
BASE | BASE(number, radix, [min_length]) | Excel | |
CEILING | CEILING(number, significance) | Excel | |
CEILING.MATH | CEILING.MATH(number, [significance], [mode]) | Excel | |
CEILING.PRECISE | CEILING.PRECISE(number, [significance]) | Excel | |
COMBIN | COMBIN(number, number_chosen) | Excel | |
COMBINA | COMBINA(number, number_chosen) | Excel | |
COS | COS(number) | Excel | |
COSH | COSH(number) | Excel | |
COT | COT(number) | Excel | |
COTH | COTH(number) | Excel | |
CSC | CSC(number) | Excel | |
CSCH | CSCH(number) | Excel | |
DECIMAL | DECIMAL(text, radix) | Excel | |
DEGREES | DEGREES(angle) | Excel | |
EVEN | EVEN(number) | Excel | |
EXP | EXP(number) | Excel | |
FACT | FACT(number) | Excel | |
FACTDOUBLE | FACTDOUBLE(number) | Excel | |
FLOOR | FLOOR(number, significance) | Excel | |
FLOOR.MATH | FLOOR.MATH(number, [significance], [mode]) | Excel | |
FLOOR.PRECISE | FLOOR.PRECISE(number, [significance]) | Excel | |
GCD | GCD(number1, ...) | Excel | |
INT | INT(number) | Excel | |
ISO.CEILING | ISO.CEILING(number, [significance]) | Excel | |
LCM | LCM(number1, ...) | Excel | |
LN | LN(number) | Excel | |
LOG | LOG(number, [base]) | Excel | |
LOG10 | LOG10(number) | Excel | |
MDETERM | MDETERM(array) | Excel | |
MINVERSE | MINVERSE(array) | Excel | |
MMULT | MMULT(array1, array2) | Excel | |
MOD | MOD(number, divisor) | Excel | |
MROUND | MROUND(number, multiple) | Excel | |
MULTINOMIAL | MULTINOMIAL(number1, ...) | Excel | |
MUNIT | MUNIT(dimension) | Excel | |
ODD | ODD(number) | Excel | |
PERCENTOF | PERCENTOF(data_subset, data_all) | Unit | |
PI | PI() | Excel | |
POWER | POWER(number, power) | Excel | |
PRODUCT | PRODUCT(number1, [number2], ...) | Excel | |
QUOTIENT | QUOTIENT(numerator, denominator) | Excel | |
RADIANS | RADIANS(angle) | Excel | |
RAND | RAND() | Unit | |
RANDBETWEEN | RANDBETWEEN(bottom, top) | Unit | |
ROMAN | ROMAN(number, [form]) | Excel | |
ROUND | ROUND(number, num_digits) | Excel | |
ROUNDDOWN | ROUNDDOWN(number, num_digits) | Excel | |
ROUNDUP | ROUNDUP(number, num_digits) | Excel | |
SEC | SEC(number) | Excel | |
SECH | SECH(number) | Excel | |
SERIESSUM | SERIESSUM(x, n, m, coefficients) | Excel | |
SIGN | SIGN(number) | Excel | |
SIN | SIN(number) | Excel | |
SINH | SINH(number) | Excel | |
SQRT | SQRT(number) | Excel | |
SQRTPI | SQRTPI(number) | Excel | |
SUBTOTAL | SUBTOTAL(function_num, ref1, ...) | Excel | |
SUM | SUM(number1, [number2], ...) | Excel | |
SUMIF | SUMIF(range, criteria, [sum_range]) | Excel | |
SUMIFS | SUMIFS(sum_range, criteria_range1, criteria1, ...) | Excel | |
SUMPRODUCT | SUMPRODUCT(array1, [array2], ...) | Excel | |
SUMSQ | SUMSQ(number1, [number2], ...) | Excel | |
SUMX2MY2 | SUMX2MY2(array_x, array_y) | Excel | |
SUMX2PY2 | SUMX2PY2(array_x, array_y) | Excel | |
SUMXMY2 | SUMXMY2(array_x, array_y) | Excel | |
TAN | TAN(number) | Excel | |
TANH | TANH(number) | Excel | |
TRUNC | TRUNC(number, [num_digits]) | Excel |
Statistical
| Function | Syntax | Verification | Notes |
|---|---|---|---|
AVEDEV | AVEDEV(number1, ...) | Excel | |
AVERAGE | AVERAGE(number1, [number2], ...) | Excel | |
AVERAGEA | AVERAGEA(value1, [value2], ...) | Excel | |
AVERAGEIF | AVERAGEIF(range, criteria, [average_range]) | Excel | |
AVERAGEIFS | AVERAGEIFS(average_range, criteria_range1, criteria1, ...) | Excel | |
BETA.DIST | BETA.DIST(x, alpha, beta, cumulative, [A], [B]) | Excel | |
BETA.INV | BETA.INV(probability, alpha, beta, [A], [B]) | Unit | |
BETADIST | BETADIST(x, alpha, beta, [A], [B]) | Unit | |
BETAINV | BETAINV(probability, alpha, beta, [A], [B]) | Unit | |
BINOM.DIST | BINOM.DIST(number_s, trials, probability_s, cumulative) | Excel | |
BINOM.DIST.RANGE | BINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2]) | Unit | |
BINOM.INV | BINOM.INV(trials, probability_s, alpha) | Unit | |
BINOMDIST | BINOMDIST(number_s, trials, probability_s, cumulative) | Excel | |
CHIDIST | CHIDIST(x, deg_freedom) | Excel | |
CHIINV | CHIINV(probability, deg_freedom) | Excel | |
CHISQ.DIST | CHISQ.DIST(x, deg_freedom, cumulative) | Excel | |
CHISQ.DIST.RT | CHISQ.DIST.RT(x, deg_freedom) | Excel | |
CHISQ.INV | CHISQ.INV(probability, deg_freedom) | Excel | |
CHISQ.INV.RT | CHISQ.INV.RT(probability, deg_freedom) | Excel | |
CHISQ.TEST | CHISQ.TEST(actual_range, expected_range) | Unit | |
CHITEST | CHITEST(actual_range, expected_range) | Unit | |
CONFIDENCE | CONFIDENCE(alpha, standard_dev, size) | Excel | |
CONFIDENCE.NORM | CONFIDENCE.NORM(alpha, standard_dev, size) | Excel | |
CONFIDENCE.T | CONFIDENCE.T(alpha, standard_dev, size) | Excel | |
CORREL | CORREL(array1, array2) | Excel | |
COUNT | COUNT(value1, [value2], ...) | Excel | |
COUNTA | COUNTA(value1, [value2], ...) | Excel | |
COUNTBLANK | COUNTBLANK(range) | Excel | |
COUNTIF | COUNTIF(range, criteria) | Excel | |
COUNTIFS | COUNTIFS(criteria_range1, criteria1, ...) | Excel | |
COVAR | COVAR(array1, array2) | Excel | |
COVARIANCE.P | COVARIANCE.P(array1, array2) | Excel | |
COVARIANCE.S | COVARIANCE.S(array1, array2) | Excel | |
CRITBINOM | CRITBINOM(trials, probability_s, alpha) | Unit | |
DEVSQ | DEVSQ(number1, ...) | Excel | |
EXPON.DIST | EXPON.DIST(x, lambda, cumulative) | Excel | |
EXPONDIST | EXPONDIST(x, lambda, cumulative) | Excel | |
F.DIST | F.DIST(x, deg_freedom1, deg_freedom2, cumulative) | Unit | |
F.DIST.RT | F.DIST.RT(x, deg_freedom1, deg_freedom2) | Unit | |
F.INV | F.INV(probability, deg_freedom1, deg_freedom2) | Unit | |
F.INV.RT | F.INV.RT(probability, deg_freedom1, deg_freedom2) | Unit | |
F.TEST | F.TEST(array1, array2) | Unit | |
FDIST | FDIST(x, deg_freedom1, deg_freedom2) | Unit | |
FINV | FINV(probability, deg_freedom1, deg_freedom2) | Unit | |
FISHER | FISHER(x) | Excel | |
FISHERINV | FISHERINV(y) | Excel | |
FORECAST | FORECAST(x, known_ys, known_xs) | Excel | |
FORECAST.ETS | FORECAST.ETS(target_date, values, timeline, [seasonality], [data_completion], [aggregation]) | Excel | The filter, starting values and error statistics were identified against Excel on 34 series: 21 reproduce to the last digit, typical series are within 0.5%, the worst is 14% (zero-filled gaps, where this finds a period of 5 and Excel none; the seasonal calls on SUM-aggregated duplicates are within 5%; with a season of 0 every aggregation is exact). Excel's search for alpha, beta and gamma minimises the squared one-step error of the training part plus the squared forecast error of the hold-out (the last 40% of the series, at most the larger of 10, two seasons and 20%; scale, offset and sign do not matter) and searches a fixed lattice of 25 (alpha, beta) pairs: without a season the lowest-cost pair is the one Excel fits on every one of about 2100 non-seasonal probes (alpha on all of them, every error statistic STAT 4-7 to the last digit, series of 4 to 7 points being extended to 7 for the search, 8 to 10 points using the plain one-step error and 3 points always 0.1 and 0.099). What Excel reports is the pair's alpha and either its beta or, for a large beta, 0.001 with a forecast of the last value plus the least-squares slope (the pair still measures the errors); the drift forecast is exact (alpha 1, beta 0 from the least-squares slope, equal to Excel to 1e-15 on all 440 drifting probes of 742, and STAT 2 is 0.001 on exactly those), but which of the two happens is only partly predicted (a depth-3 tree on the hold-out shift, the Durbin-Watson of the linear fit and the pair's trend over the slope reaches 85% cross-validated and was not adopted; Durbin-Watson, ADF and KPSS statistics each predict it on 61 to 78% (80% with the hold-out shift) with different thresholds and directions per pair, so it is not a unit-root test; nor is it a comparison of the errors of the two forecasts: the cost of the drift model (full-data or training-part slope) over the pair's, on the search cost, the hold-out part alone or a naive hold-out forecast, separates 59 to 65% of the 742 with one threshold and at most 80% with a threshold fitted for each pair, under the rule's 83%; a few pairs always drift, the rest by the hold-out mean and the slope strength: 83% of 643 probes, so about 1 forecast in 6 of those series differs, up to 13%), and 95% of all forecasts on the 491 search probes equal Excel's; with a season whose starting states are Excel's own (4 whole seasons, 5 and more, 4 seasons plus a partial one, 3 seasons plus a partial one, 2 seasons plus a partial one, exactly 2 seasons; seasons of 4 and more for the last four, seasons of 3 from 6 points and of 2 from 5) the same cost is used over the 20 (alpha, beta, gamma) the same cost is used over the 20 (alpha, beta, gamma) triples Excel is seen to report, on the series padded the way the starting trend pads it (its triple on 2307 of 2319 recorded series), and elsewhere the plain one-step error. Starting states: the starting trend is exact (recovered to 1e-15 from Excel's forecasts) for every series without a season, 3 to 16 points. For seasonal series the start is a fixed linear function of the data, recovered exactly (ets-init-chain.ts, ets-init-chain.test.ts): for 4 whole seasons or 5 and more (only the first 5 seasons are read) the position states follow each other along m consecutive times through first-seasons means and half-split slopes of the positions and the start trend is the least-squares slope of the series without them, which reproduces Excel's forecasts at its own parameters to rounding error on about 1200 probe series (seasons 2 to 12). 3 whole seasons plus up to ceil(m/2) + 1 points and exactly 2 seasons (seasons of 4 and more) are exact too (ets-init-three.ts: a blend of a forward and a backward chain with a slope-sum drift and a corner term, a trend fitted on the series padded to 3m + ceil(m/2) points, and 2 seasons extended to 3), to rounding error on about 1100 more probe series (seasons 4 to 12). 4 seasons plus a partial one (ets-init-four.ts: the 4-season chain of the first 4m values with a shifted template added to the states of the first r positions, r the points past the 4 seasons) and 3 seasons plus more than ceil(m/2) + 1 points up to 4 seasons (ets-init-threeplus.ts: the 3-season rule with a shifted template taken off the states of the first n - 3m - ceil(m/2) - 1 positions) are exact too for seasons of 4 and more, to rounding error on the recorded probes (seasons 4 to 10). 2 seasons plus a partial one is the same rule on the series extended to 3 seasons by y[t - 2m] + 2m * b, b the mean of the positions' least-squares slopes, with the drift term and the trend padding taken from the original series (ets-init-three.ts). Below 2 seasons Excel ignores the season for the shortest series (the model is the non-seasonal one, gamma is reported as the machine epsilon) and uses it from ceil(10 (m + 1) / 7) points (checked on 400 series, seasons of 2 to 16, 17 to 24, 30 and 40, both sides of every boundary); from there to 2 seasons minus 1 point (seasons of 5 and more) the start is exact too: the 2-season rule on the series padded to 2 seasons by y[t - m], plus slopeSum / 2 on the padded positions and a trend shift of (u^2 - (j0 - 2) u + 2 (j0 - 1)) / 4 times slopeSum over sxx (u = 2m - 1 - n, j0 = floor(m / 2); ets-init-short.ts), to rounding error on the recorded probes (seasons 5 to 16), and seasons of 2 are exact from 5 points. The smoothing parameters there are found on about half of the recorded series (the padded cost with extra sixth and twelfth triples; the lattice Excel searches below 2 seasons is not recovered). Not exact: seasons above 24, and the parameter search of short seasonal series. Ruled out against the recovered maps: single and multi-pass backcasting with fixed parameters on a 0.01 lattice, weighted regressions with geometric weights, plain seasonal-dummy regression and classical decomposition. |
FORECAST.ETS.CONFINT | FORECAST.ETS.CONFINT(target_date, values, timeline, [confidence_level], [seasonality], [data_completion], [aggregation]) | Excel | RMSE times sqrt(1 + sum of (alpha + j*beta)^2) as in Excel: equal to Excel where the fitted parameters are, up to 37% off where they differ (mostly seasonal models, whose gamma term was not checked against Excel). |
FORECAST.ETS.SEASONALITY | FORECAST.ETS.SEASONALITY(values, timeline, [data_completion], [aggregation]) | Excel | First peak of the autocorrelation of the detrended series that reaches 0.3 (lags 2 to a third of the series); agrees with Excel on 377 of 463 recorded series (277 of 352 designed noise and wave series), all noiseless waves, trends and impulse trains included. 0 means none. Excel also reports a period on about a quarter of white-noise series of 8 to 60 points by a rule that is not the autocorrelation, and this does not. What is measured of that rule: it gives the same answer for the negated, reversed, rescaled or shifted series (768 of 768 copies), so it is symmetric in time and is not the fit of a seasonal ETS model; the reported period is n / k rounded (halves down) for the Fourier frequency k with the largest periodogram ordinate of the detrended series on 66 of 77 noise series (the largest autocorrelation: about half); whether any period is reported is not a threshold on that ordinate's share of the total (it nearly separates the series of 8 to 12 points, not longer ones). Fisher's exact g test on the detrended periodogram (alpha from 0.01 to 0.5, all ordinates or only those in the period range, bin or integer-period peak) agrees on at most 381 of 463 series, and the p-values of reported and unreported noise series overlap at every length, so it is not Fisher's test. A periodogram detector with a threshold fitted on the share reaches 384 of 463 against 377 here, so the autocorrelation rule is kept. 290 amplitude sweeps (a cosine of 0.15 to 3 sd added to 29 unreported noise series) show the answer is neither the spectrum's argmax nor a threshold on it: a multiple of the cosine's period (10 or 20 for period 5) is reported in a middle range of amplitudes, a period-7.5 cosine reads 7 weak and 8 strong, and the flip happens at a share of 0.17 to 0.45. Ruled out on those and the noise series: the ANOVA F or its smallest p-value over the integer periods folded (178 of 256 noise series against 179 for none), the autocorrelation at the peak's period, seasonal-dummy regressions by AIC, AICc or BIC, and quadratic, cubic, moving-average or difference detrending. |
FORECAST.ETS.STAT | FORECAST.ETS.STAT(values, timeline, statistic_type, [seasonality], [data_completion], [aggregation]) | Excel | Step size agrees; the error statistics are measured on the last points as in Excel and equal it where the parameters do; alpha is found on 25 of 32 recorded series, beta on 29 (on the 491 non-seasonal probes: alpha on every one, beta on 477). |
FORECAST.LINEAR | FORECAST.LINEAR(x, known_ys, known_xs) | Excel | |
FREQUENCY | FREQUENCY(data_array, bins_array) | Excel | |
FTEST | FTEST(array1, array2) | Unit | |
GAMMA | GAMMA(number) | Excel | |
GAMMA.DIST | GAMMA.DIST(x, alpha, beta, cumulative) | Excel | |
GAMMA.INV | GAMMA.INV(probability, alpha, beta) | Unit | |
GAMMADIST | GAMMADIST(x, alpha, beta, cumulative) | Unit | |
GAMMAINV | GAMMAINV(probability, alpha, beta) | Unit | |
GAMMALN | GAMMALN(x) | Excel | |
GAMMALN.PRECISE | GAMMALN.PRECISE(x) | Excel | |
GAUSS | GAUSS(z) | Excel | |
GEOMEAN | GEOMEAN(number1, ...) | Excel | |
GROWTH | GROWTH(known_y, [known_x], [new_x], [const]) | Unit | |
HARMEAN | HARMEAN(number1, ...) | Excel | |
HYPGEOM.DIST | HYPGEOM.DIST(sample_s, number_sample, population_s, number_pop, cumulative) | Excel | |
HYPGEOMDIST | HYPGEOMDIST(sample_s, number_sample, population_s, number_pop) | Unit | |
INTERCEPT | INTERCEPT(known_ys, known_xs) | Excel | |
KURT | KURT(number1, ...) | Excel | |
LARGE | LARGE(array, k) | Excel | |
LINEST | LINEST(known_y, [known_x], [const], [stats]) | Unit | |
LOGEST | LOGEST(known_y, [known_x], [const], [stats]) | Unit | |
LOGINV | LOGINV(probability, mean, standard_dev) | Unit | |
LOGNORM.DIST | LOGNORM.DIST(x, mean, standard_dev, cumulative) | Excel | |
LOGNORM.INV | LOGNORM.INV(probability, mean, standard_dev) | Excel | |
LOGNORMDIST | LOGNORMDIST(x, mean, standard_dev) | Unit | |
MAX | MAX(number1, [number2], ...) | Excel | |
MAXA | MAXA(value1, [value2], ...) | Excel | |
MAXIFS | MAXIFS(max_range, criteria_range1, criteria1, ...) | Excel | |
MEDIAN | MEDIAN(number1, [number2], ...) | Excel | |
MIN | MIN(number1, [number2], ...) | Excel | |
MINA | MINA(value1, [value2], ...) | Excel | |
MINIFS | MINIFS(min_range, criteria_range1, criteria1, ...) | Excel | |
MODE | MODE(number1, [number2], ...) | Excel | |
MODE.MULT | MODE.MULT(number1, [number2], ...) | Excel | |
MODE.SNGL | MODE.SNGL(number1, [number2], ...) | Excel | |
NEGBINOM.DIST | NEGBINOM.DIST(number_f, number_s, probability_s, cumulative) | Excel | |
NEGBINOMDIST | NEGBINOMDIST(number_f, number_s, probability_s) | Unit | |
NORM.DIST | NORM.DIST(x, mean, standard_dev, cumulative) | Excel | |
NORM.INV | NORM.INV(probability, mean, standard_dev) | Excel | |
NORM.S.DIST | NORM.S.DIST(z, cumulative) | Excel | |
NORM.S.INV | NORM.S.INV(probability) | Excel | |
NORMDIST | NORMDIST(x, mean, standard_dev, cumulative) | Excel | |
NORMINV | NORMINV(probability, mean, standard_dev) | Excel | |
NORMSDIST | NORMSDIST(z) | Excel | |
NORMSINV | NORMSINV(probability) | Excel | |
PEARSON | PEARSON(array1, array2) | Excel | |
PERCENTILE | PERCENTILE(array, k) | Excel | |
PERCENTILE.EXC | PERCENTILE.EXC(array, k) | Excel | |
PERCENTILE.INC | PERCENTILE.INC(array, k) | Excel | |
PERCENTRANK | PERCENTRANK(array, x, [significance]) | Excel | |
PERCENTRANK.EXC | PERCENTRANK.EXC(array, x, [significance]) | Excel | |
PERCENTRANK.INC | PERCENTRANK.INC(array, x, [significance]) | Excel | |
PERMUT | PERMUT(number, number_chosen) | Excel | |
PERMUTATIONA | PERMUTATIONA(number, number_chosen) | Excel | |
PHI | PHI(x) | Excel | |
POISSON | POISSON(x, mean, cumulative) | Excel | |
POISSON.DIST | POISSON.DIST(x, mean, cumulative) | Excel | |
PROB | PROB(x_range, prob_range, lower_limit, [upper_limit]) | Unit | |
QUARTILE | QUARTILE(array, quart) | Excel | |
QUARTILE.EXC | QUARTILE.EXC(array, quart) | Excel | |
QUARTILE.INC | QUARTILE.INC(array, quart) | Excel | |
RANK | RANK(number, ref, [order]) | Excel | |
RANK.AVG | RANK.AVG(number, ref, [order]) | Unit | |
RANK.EQ | RANK.EQ(number, ref, [order]) | Excel | |
RSQ | RSQ(known_ys, known_xs) | Excel | |
SKEW | SKEW(number1, ...) | Excel | |
SKEW.P | SKEW.P(number1, ...) | Excel | |
SLOPE | SLOPE(known_ys, known_xs) | Excel | |
SMALL | SMALL(array, k) | Excel | |
STANDARDIZE | STANDARDIZE(x, mean, standard_dev) | Excel | |
STDEV | STDEV(number1, [number2], ...) | Excel | |
STDEV.P | STDEV.P(number1, [number2], ...) | Excel | |
STDEV.S | STDEV.S(number1, [number2], ...) | Excel | |
STDEVA | STDEVA(number1, [number2], ...) | Excel | |
STDEVP | STDEVP(number1, [number2], ...) | Excel | |
STDEVPA | STDEVPA(number1, [number2], ...) | Excel | |
STEYX | STEYX(known_ys, known_xs) | Excel | |
T.DIST | T.DIST(x, deg_freedom, cumulative) | Excel | |
T.DIST.2T | T.DIST.2T(x, deg_freedom) | Excel | |
T.DIST.RT | T.DIST.RT(x, deg_freedom) | Excel | |
T.INV | T.INV(probability, deg_freedom) | Excel | |
T.INV.2T | T.INV.2T(probability, deg_freedom) | Excel | |
T.TEST | T.TEST(array1, array2, tails, type) | Unit | |
TDIST | TDIST(x, deg_freedom, tails) | Excel | |
TINV | TINV(probability, deg_freedom) | Excel | |
TREND | TREND(known_y, [known_x], [new_x], [const]) | Unit | |
TRIMMEAN | TRIMMEAN(array, percent) | Excel | |
TTEST | TTEST(array1, array2, tails, type) | Unit | |
VAR | VAR(number1, [number2], ...) | Excel | |
VAR.P | VAR.P(number1, [number2], ...) | Excel | |
VAR.S | VAR.S(number1, [number2], ...) | Excel | |
VARA | VARA(number1, [number2], ...) | Excel | |
VARP | VARP(number1, [number2], ...) | Excel | |
VARPA | VARPA(number1, [number2], ...) | Excel | |
WEIBULL | WEIBULL(x, alpha, beta, cumulative) | Excel | |
WEIBULL.DIST | WEIBULL.DIST(x, alpha, beta, cumulative) | Excel | |
Z.TEST | Z.TEST(array, x, [sigma]) | Unit | |
ZTEST | ZTEST(array, x, [sigma]) | Unit |
Text
| Function | Syntax | Verification | Notes |
|---|---|---|---|
ARRAYTOTEXT | ARRAYTOTEXT(array, [format]) | Excel | |
BAHTTEXT | BAHTTEXT(number) | Unit | |
CHAR | CHAR(number) | Excel | |
CLEAN | CLEAN(text) | Excel | |
CODE | CODE(text) | Excel | |
CONCAT | CONCAT(text1, [text2], ...) | Excel | |
CONCATENATE | CONCATENATE(text1, [text2], ...) | Excel | |
DOLLAR | DOLLAR(number, [decimals]) | Excel | |
ENCODEURL | ENCODEURL(text) | Unit | |
EXACT | EXACT(text1, text2) | Excel | |
FIND | FIND(find_text, within_text, [start_num]) | Excel | |
FINDB | FINDB(find_text, within_text, [start_num]) | Excel | |
FIXED | FIXED(number, [decimals], [no_commas]) | Excel | |
LEFT | LEFT(text, [num_chars]) | Excel | |
LEFTB | LEFTB(text, [num_chars]) | Excel | |
LEN | LEN(text) | Excel | |
LENB | LENB(text) | Excel | |
LOWER | LOWER(text) | Excel | |
MID | MID(text, start_num, num_chars) | Excel | |
MIDB | MIDB(text, start_num, num_chars) | Excel | |
NUMBERVALUE | NUMBERVALUE(text, [decimal_separator], [group_separator]) | Excel | |
PROPER | PROPER(text) | Excel | |
REGEXEXTRACT | REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity]) | Unit | |
REGEXREPLACE | REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity]) | Unit | |
REGEXTEST | REGEXTEST(text, pattern, [case_sensitivity]) | Unit | |
REPLACE | REPLACE(old_text, start_num, num_chars, new_text) | Excel | |
REPLACEB | REPLACEB(old_text, start_num, num_chars, new_text) | Excel | |
REPT | REPT(text, number_times) | Excel | |
RIGHT | RIGHT(text, [num_chars]) | Excel | |
RIGHTB | RIGHTB(text, [num_chars]) | Excel | |
SEARCH | SEARCH(find_text, within_text, [start_num]) | Excel | |
SEARCHB | SEARCHB(find_text, within_text, [start_num]) | Excel | |
SUBSTITUTE | SUBSTITUTE(text, old_text, new_text, [instance_num]) | Excel | |
T | T(value) | Excel | |
TEXT | TEXT(value, format_text) | Excel | |
TEXTAFTER | TEXTAFTER(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found]) | Excel | |
TEXTBEFORE | TEXTBEFORE(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found]) | Excel | |
TEXTJOIN | TEXTJOIN(delimiter, ignore_empty, text1, ...) | Excel | |
TEXTSPLIT | TEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with]) | Excel | |
TRIM | TRIM(text) | Excel | |
UNICHAR | UNICHAR(number) | Excel | |
UNICODE | UNICODE(text) | Excel | |
UPPER | UPPER(text) | Excel | |
VALUE | VALUE(text) | Excel | |
VALUETOTEXT | VALUETOTEXT(value, [format]) | Excel |
Web
| Function | Syntax | Verification | Notes |
|---|---|---|---|
FILTERXML | FILTERXML(xml, xpath) | Excel |