Skip to content

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.

FunctionsMissing capability
CUBEKPIMEMBER, CUBEMEMBER, CUBEMEMBERPROPERTY, CUBERANKEDMEMBER, CUBESET, CUBESETCOUNT, CUBEVALUEOLAP connection and query execution.
WEBSERVICEHTTP retrieval.
STOCKHISTORYHistorical market data service.
RTDReal-time data provider.
IMAGEFormula-driven image retrieval and in-cell image results.
COPILOT, TRANSLATE, DETECTLANGUAGEAI and language services.

INFO, ASC, DBCS, JIS, PHONETIC and EUROCONVERT remain unimplemented too.

Database ​

FunctionSyntaxVerificationNotes
DAVERAGEDAVERAGE(database, field, criteria)Unit
DCOUNTDCOUNT(database, field, criteria)Unit
DCOUNTADCOUNTA(database, field, criteria)Unit
DGETDGET(database, field, criteria)Unit
DMAXDMAX(database, field, criteria)Unit
DMINDMIN(database, field, criteria)Unit
DPRODUCTDPRODUCT(database, field, criteria)Unit
DSTDEVDSTDEV(database, field, criteria)Unit
DSTDEVPDSTDEVP(database, field, criteria)Unit
DSUMDSUM(database, field, criteria)Unit
DVARDVAR(database, field, criteria)Unit
DVARPDVARP(database, field, criteria)Unit

Date & Time ​

FunctionSyntaxVerificationNotes
DATEDATE(year, month, day)Excel
DATEDIFDATEDIF(start_date, end_date, unit)Excel
DATEVALUEDATEVALUE(date_text)Excel
DAYDAY(serial_number)Excel
DAYSDAYS(end_date, start_date)Excel
DAYS360DAYS360(start_date, end_date, [method])Excel
EDATEEDATE(start_date, months)Excel
EOMONTHEOMONTH(start_date, months)Excel
HOURHOUR(serial_number)Excel
ISOWEEKNUMISOWEEKNUM(date)Excel
MINUTEMINUTE(serial_number)Excel
MONTHMONTH(serial_number)Excel
NETWORKDAYSNETWORKDAYS(start_date, end_date, [holidays])Excel
NETWORKDAYS.INTLNETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])Excel
NOWNOW()Unit
SECONDSECOND(serial_number)Excel
TIMETIME(hour, minute, second)Excel
TIMEVALUETIMEVALUE(time_text)Excel
TODAYTODAY()Unit
WEEKDAYWEEKDAY(serial_number, [return_type])Excel
WEEKNUMWEEKNUM(serial_number, [return_type])Excel
WORKDAYWORKDAY(start_date, days, [holidays])Excel
WORKDAY.INTLWORKDAY.INTL(start_date, days, [weekend], [holidays])Excel
YEARYEAR(serial_number)Excel
YEARFRACYEARFRAC(start_date, end_date, [basis])Excel

Engineering ​

FunctionSyntaxVerificationNotes
BESSELIBESSELI(x, n)Unit
BESSELJBESSELJ(x, n)UnitAbout 1e-7 from the value Microsoft documents for some arguments.
BESSELKBESSELK(x, n)Unit
BESSELYBESSELY(x, n)Unit
BIN2DECBIN2DEC(number)Excel
BIN2HEXBIN2HEX(number, [places])Excel
BIN2OCTBIN2OCT(number, [places])Excel
BITANDBITAND(number1, number2)Excel
BITLSHIFTBITLSHIFT(number, shift_amount)Excel
BITORBITOR(number1, number2)Excel
BITRSHIFTBITRSHIFT(number, shift_amount)Excel
BITXORBITXOR(number1, number2)Excel
COMPLEXCOMPLEX(real_num, i_num, [suffix])Unit
CONVERTCONVERT(number, from_unit, to_unit)Unit
DEC2BINDEC2BIN(number, [places])Excel
DEC2HEXDEC2HEX(number, [places])Excel
DEC2OCTDEC2OCT(number, [places])Excel
DELTADELTA(number1, [number2])Excel
ERFERF(lower_limit, [upper_limit])Excel
ERF.PRECISEERF.PRECISE(x)Excel
ERFCERFC(x)Excel
ERFC.PRECISEERFC.PRECISE(x)Excel
GESTEPGESTEP(number, [step])Excel
HEX2BINHEX2BIN(number, [places])Excel
HEX2DECHEX2DEC(number)Excel
HEX2OCTHEX2OCT(number, [places])Unit
IMABSIMABS(inumber)Unit
IMAGINARYIMAGINARY(inumber)Unit
IMARGUMENTIMARGUMENT(inumber)Unit
IMCONJUGATEIMCONJUGATE(inumber)Unit
IMCOSIMCOS(inumber)Unit
IMCOSHIMCOSH(inumber)Unit
IMCOTIMCOT(inumber)Unit
IMCSCIMCSC(inumber)Unit
IMCSCHIMCSCH(inumber)Unit
IMDIVIMDIV(inumber1, inumber2)Unit
IMEXPIMEXP(inumber)Unit
IMLNIMLN(inumber)Unit
IMLOG10IMLOG10(inumber)Unit
IMLOG2IMLOG2(inumber)Unit
IMPOWERIMPOWER(inumber, number)Unit
IMPRODUCTIMPRODUCT(inumber1, [inumber2], ...)Unit
IMREALIMREAL(inumber)Unit
IMSECIMSEC(inumber)Unit
IMSECHIMSECH(inumber)Unit
IMSINIMSIN(inumber)Unit
IMSINHIMSINH(inumber)Unit
IMSQRTIMSQRT(inumber)Unit
IMSUBIMSUB(inumber1, inumber2)Unit
IMSUMIMSUM(inumber1, [inumber2], ...)Unit
IMTANIMTAN(inumber)Unit
OCT2BINOCT2BIN(number, [places])Excel
OCT2DECOCT2DEC(number)Excel
OCT2HEXOCT2HEX(number, [places])Excel

Financial ​

FunctionSyntaxVerificationNotes
ACCRINTACCRINT(issue, first_interest, settlement, rate, par, frequency, [basis], [calc_method])Unit
ACCRINTMACCRINTM(issue, settlement, rate, [par], [basis])Unit
AMORDEGRCAMORDEGRC(cost, date_purchased, first_period, salvage, period, rate, [basis])Unit
AMORLINCAMORLINC(cost, date_purchased, first_period, salvage, period, rate, [basis])Excel
COUPDAYBSCOUPDAYBS(settlement, maturity, frequency, [basis])Unit
COUPDAYSCOUPDAYS(settlement, maturity, frequency, [basis])Unit
COUPDAYSNCCOUPDAYSNC(settlement, maturity, frequency, [basis])Unit
COUPNCDCOUPNCD(settlement, maturity, frequency, [basis])Unit
COUPNUMCOUPNUM(settlement, maturity, frequency, [basis])Unit
COUPPCDCOUPPCD(settlement, maturity, frequency, [basis])Unit
CUMIPMTCUMIPMT(rate, nper, pv, start_period, end_period, type)Excel
CUMPRINCCUMPRINC(rate, nper, pv, start_period, end_period, type)Excel
DBDB(cost, salvage, life, period, [month])Excel
DDBDDB(cost, salvage, life, period, [factor])Excel
DISCDISC(settlement, maturity, pr, redemption, [basis])Unit
DOLLARDEDOLLARDE(fractional_dollar, fraction)Excel
DOLLARFRDOLLARFR(decimal_dollar, fraction)Excel
DURATIONDURATION(settlement, maturity, coupon, yld, frequency, [basis])Unit
EFFECTEFFECT(nominal_rate, npery)Excel
FVFV(rate, nper, pmt, [pv], [type])Excel
FVSCHEDULEFVSCHEDULE(principal, schedule)Excel
INTRATEINTRATE(settlement, maturity, investment, redemption, [basis])Unit
IPMTIPMT(rate, per, nper, pv, [fv], [type])Excel
IRRIRR(values, [guess])Excel
ISPMTISPMT(rate, per, nper, pv)Excel
MDURATIONMDURATION(settlement, maturity, coupon, yld, frequency, [basis])Unit
MIRRMIRR(values, finance_rate, reinvest_rate)Excel
NOMINALNOMINAL(effect_rate, npery)Excel
NPERNPER(rate, pmt, pv, [fv], [type])Excel
NPVNPV(rate, value1, [value2], ...)Excel
ODDFPRICEODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis])UnitQuasi-coupon method; long odd first periods not checked against Excel.
ODDFYIELDODDFYIELD(settlement, maturity, issue, first_coupon, rate, pr, redemption, frequency, [basis])UnitQuasi-coupon method; long odd first periods not checked against Excel.
ODDLPRICEODDLPRICE(settlement, maturity, last_interest, rate, yld, redemption, frequency, [basis])UnitQuasi-coupon method; not checked against Excel.
ODDLYIELDODDLYIELD(settlement, maturity, last_interest, rate, pr, redemption, frequency, [basis])UnitQuasi-coupon method; not checked against Excel.
PDURATIONPDURATION(rate, pv, fv)Excel
PMTPMT(rate, nper, pv, [fv], [type])Excel
PPMTPPMT(rate, per, nper, pv, [fv], [type])Excel
PRICEPRICE(settlement, maturity, rate, yld, redemption, frequency, [basis])Unit
PRICEDISCPRICEDISC(settlement, maturity, discount, redemption, [basis])Unit
PRICEMATPRICEMAT(settlement, maturity, issue, rate, yld, [basis])Unit
PVPV(rate, nper, pmt, [fv], [type])Excel
RATERATE(nper, pmt, pv, [fv], [type], [guess])Excel
RECEIVEDRECEIVED(settlement, maturity, investment, discount, [basis])Unit
RRIRRI(nper, pv, fv)Excel
SLNSLN(cost, salvage, life)Excel
SYDSYD(cost, salvage, life, per)Excel
TBILLEQTBILLEQ(settlement, maturity, discount)Unit
TBILLPRICETBILLPRICE(settlement, maturity, discount)Unit
TBILLYIELDTBILLYIELD(settlement, maturity, pr)Unit
VDBVDB(cost, salvage, life, start_period, end_period, [factor], [no_switch])Unit
XIRRXIRR(values, dates, [guess])Excel
XNPVXNPV(rate, values, dates)Excel
YIELDYIELD(settlement, maturity, rate, pr, redemption, frequency, [basis])Unit
YIELDDISCYIELDDISC(settlement, maturity, pr, redemption, [basis])Unit
YIELDMATYIELDMAT(settlement, maturity, issue, rate, pr, [basis])Unit

Information ​

FunctionSyntaxVerificationNotes
CELLCELL(info_type, [reference])Excel
ERROR.TYPEERROR.TYPE(error_val)Excel
ISBLANKISBLANK(value)Excel
ISERRISERR(value)Excel
ISERRORISERROR(value)Excel
ISEVENISEVEN(number)Excel
ISFORMULAISFORMULA(reference)Excel
ISLOGICALISLOGICAL(value)Excel
ISNAISNA(value)Excel
ISNONTEXTISNONTEXT(value)Excel
ISNUMBERISNUMBER(value)Excel
ISODDISODD(number)Excel
ISREFISREF(value)Excel
ISTEXTISTEXT(value)Excel
NN(value)Excel
NANA()Excel
SHEETSHEET([value])Excel
SHEETSSHEETS([reference])Excel
TYPETYPE(value)Excel

Logical ​

FunctionSyntaxVerificationNotes
ANDAND(logical1, [logical2], ...)Excel
BYCOLBYCOL(array, lambda)Excel
BYROWBYROW(array, lambda)Excel
FALSEFALSE()Excel
IFIF(logical_test, [value_if_true], [value_if_false])Excel
IFERRORIFERROR(value, value_if_error)Excel
IFNAIFNA(value, value_if_na)Excel
IFSIFS(logical_test1, value_if_true1, ...)Excel
ISOMITTEDISOMITTED(argument)Unit
LAMBDALAMBDA([parameter1, ...], calculation)Excel
LETLET(name1, value1, [name2, value2, ...], calculation)Excel
MAKEARRAYMAKEARRAY(rows, columns, lambda)Excel
MAPMAP(array1, ..., lambda)Excel
NOTNOT(logical)Excel
OROR(logical1, [logical2], ...)Excel
REDUCEREDUCE([initial_value], array, lambda)Excel
SCANSCAN([initial_value], array, lambda)Excel
SWITCHSWITCH(expression, value1, result1, ..., [default])Excel
TRUETRUE()Excel
XORXOR(logical1, [logical2], ...)Excel

Lookup & Reference ​

FunctionSyntaxVerificationNotes
ADDRESSADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])Excel
ANCHORARRAYANCHORARRAY(reference)Unit
AREASAREAS(reference)Excel
CHOOSECHOOSE(index_num, value1, [value2], ...)Excel
CHOOSECOLSCHOOSECOLS(array, col_num1, ...)Excel
CHOOSEROWSCHOOSEROWS(array, row_num1, ...)Excel
COLUMNCOLUMN([reference])Excel
COLUMNSCOLUMNS(array)Excel
DROPDROP(array, rows, [columns])Excel
EXPANDEXPAND(array, rows, [columns], [pad_with])Excel
FILTERFILTER(array, include, [if_empty])Excel
FORMULATEXTFORMULATEXT(reference)Excel
GETPIVOTDATAGETPIVOTDATA(data_field, pivot_table, [field1, item1], ...)UnitReads this editor's worksheet-range pivots; #REF! for anything else.
GROUPBYGROUPBY(row_fields, values, function, [field_headers], [total_depth], [sort_order], [filter_array], [field_relationship])UnitSubset: one aggregating function, grand totals only, flat output.
HLOOKUPHLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])Excel
HSTACKHSTACK(array1, [array2], ...)Excel
HYPERLINKHYPERLINK(link_location, [friendly_name])Excel
INDEXINDEX(array, row_num, [column_num], [area_num])Excel
INDIRECTINDIRECT(ref_text, [a1])Excel
LOOKUPLOOKUP(lookup_value, lookup_vector, [result_vector])Excel
MATCHMATCH(lookup_value, lookup_array, [match_type])Excel
OFFSETOFFSET(reference, rows, cols, [height], [width])Excel
PIVOTBYPIVOTBY(row_fields, col_fields, values, function, [field_headers], [row_total_depth], [row_sort_order], [col_total_depth], [col_sort_order], [filter_array], [relative_to])UnitSubset: one aggregating function, one column field, grand totals only.
RANDARRAYRANDARRAY([rows], [columns], [min], [max], [integer])Excel
ROWROW([reference])Excel
ROWSROWS(array)Excel
SEQUENCESEQUENCE(rows, [columns], [start], [step])Excel
SINGLESINGLE(value)Unit
SORTSORT(array, [sort_index], [sort_order], [by_col])Excel
SORTBYSORTBY(array, by_array1, [sort_order1], ...)Excel
TAKETAKE(array, rows, [columns])Excel
TOCOLTOCOL(array, [ignore], [scan_by_column])Excel
TOROWTOROW(array, [ignore], [scan_by_column])Excel
TRANSPOSETRANSPOSE(array)Excel
TRIMRANGETRIMRANGE(range, [trim_rows], [trim_cols])UnitReturns the trimmed values as an array rather than a reference.
UNIQUEUNIQUE(array, [by_col], [exactly_once])Excel
VLOOKUPVLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])Excel
VSTACKVSTACK(array1, [array2], ...)Excel
WRAPCOLSWRAPCOLS(vector, wrap_count, [pad_with])Excel
WRAPROWSWRAPROWS(vector, wrap_count, [pad_with])Excel
XLOOKUPXLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])Excel
XMATCHXMATCH(lookup_value, lookup_array, [match_mode], [search_mode])Excel

Math & Trig ​

FunctionSyntaxVerificationNotes
ABSABS(number)Excel
ACOSACOS(number)Excel
ACOSHACOSH(number)Excel
ACOTACOT(number)Excel
ACOTHACOTH(number)Excel
AGGREGATEAGGREGATE(function_num, options, ref1, ...)Excel
ARABICARABIC(text)Excel
ASINASIN(number)Excel
ASINHASINH(number)Excel
ATANATAN(number)Excel
ATAN2ATAN2(x_num, y_num)Excel
ATANHATANH(number)Excel
BASEBASE(number, radix, [min_length])Excel
CEILINGCEILING(number, significance)Excel
CEILING.MATHCEILING.MATH(number, [significance], [mode])Excel
CEILING.PRECISECEILING.PRECISE(number, [significance])Excel
COMBINCOMBIN(number, number_chosen)Excel
COMBINACOMBINA(number, number_chosen)Excel
COSCOS(number)Excel
COSHCOSH(number)Excel
COTCOT(number)Excel
COTHCOTH(number)Excel
CSCCSC(number)Excel
CSCHCSCH(number)Excel
DECIMALDECIMAL(text, radix)Excel
DEGREESDEGREES(angle)Excel
EVENEVEN(number)Excel
EXPEXP(number)Excel
FACTFACT(number)Excel
FACTDOUBLEFACTDOUBLE(number)Excel
FLOORFLOOR(number, significance)Excel
FLOOR.MATHFLOOR.MATH(number, [significance], [mode])Excel
FLOOR.PRECISEFLOOR.PRECISE(number, [significance])Excel
GCDGCD(number1, ...)Excel
INTINT(number)Excel
ISO.CEILINGISO.CEILING(number, [significance])Excel
LCMLCM(number1, ...)Excel
LNLN(number)Excel
LOGLOG(number, [base])Excel
LOG10LOG10(number)Excel
MDETERMMDETERM(array)Excel
MINVERSEMINVERSE(array)Excel
MMULTMMULT(array1, array2)Excel
MODMOD(number, divisor)Excel
MROUNDMROUND(number, multiple)Excel
MULTINOMIALMULTINOMIAL(number1, ...)Excel
MUNITMUNIT(dimension)Excel
ODDODD(number)Excel
PERCENTOFPERCENTOF(data_subset, data_all)Unit
PIPI()Excel
POWERPOWER(number, power)Excel
PRODUCTPRODUCT(number1, [number2], ...)Excel
QUOTIENTQUOTIENT(numerator, denominator)Excel
RADIANSRADIANS(angle)Excel
RANDRAND()Unit
RANDBETWEENRANDBETWEEN(bottom, top)Unit
ROMANROMAN(number, [form])Excel
ROUNDROUND(number, num_digits)Excel
ROUNDDOWNROUNDDOWN(number, num_digits)Excel
ROUNDUPROUNDUP(number, num_digits)Excel
SECSEC(number)Excel
SECHSECH(number)Excel
SERIESSUMSERIESSUM(x, n, m, coefficients)Excel
SIGNSIGN(number)Excel
SINSIN(number)Excel
SINHSINH(number)Excel
SQRTSQRT(number)Excel
SQRTPISQRTPI(number)Excel
SUBTOTALSUBTOTAL(function_num, ref1, ...)Excel
SUMSUM(number1, [number2], ...)Excel
SUMIFSUMIF(range, criteria, [sum_range])Excel
SUMIFSSUMIFS(sum_range, criteria_range1, criteria1, ...)Excel
SUMPRODUCTSUMPRODUCT(array1, [array2], ...)Excel
SUMSQSUMSQ(number1, [number2], ...)Excel
SUMX2MY2SUMX2MY2(array_x, array_y)Excel
SUMX2PY2SUMX2PY2(array_x, array_y)Excel
SUMXMY2SUMXMY2(array_x, array_y)Excel
TANTAN(number)Excel
TANHTANH(number)Excel
TRUNCTRUNC(number, [num_digits])Excel

Statistical ​

FunctionSyntaxVerificationNotes
AVEDEVAVEDEV(number1, ...)Excel
AVERAGEAVERAGE(number1, [number2], ...)Excel
AVERAGEAAVERAGEA(value1, [value2], ...)Excel
AVERAGEIFAVERAGEIF(range, criteria, [average_range])Excel
AVERAGEIFSAVERAGEIFS(average_range, criteria_range1, criteria1, ...)Excel
BETA.DISTBETA.DIST(x, alpha, beta, cumulative, [A], [B])Excel
BETA.INVBETA.INV(probability, alpha, beta, [A], [B])Unit
BETADISTBETADIST(x, alpha, beta, [A], [B])Unit
BETAINVBETAINV(probability, alpha, beta, [A], [B])Unit
BINOM.DISTBINOM.DIST(number_s, trials, probability_s, cumulative)Excel
BINOM.DIST.RANGEBINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2])Unit
BINOM.INVBINOM.INV(trials, probability_s, alpha)Unit
BINOMDISTBINOMDIST(number_s, trials, probability_s, cumulative)Excel
CHIDISTCHIDIST(x, deg_freedom)Excel
CHIINVCHIINV(probability, deg_freedom)Excel
CHISQ.DISTCHISQ.DIST(x, deg_freedom, cumulative)Excel
CHISQ.DIST.RTCHISQ.DIST.RT(x, deg_freedom)Excel
CHISQ.INVCHISQ.INV(probability, deg_freedom)Excel
CHISQ.INV.RTCHISQ.INV.RT(probability, deg_freedom)Excel
CHISQ.TESTCHISQ.TEST(actual_range, expected_range)Unit
CHITESTCHITEST(actual_range, expected_range)Unit
CONFIDENCECONFIDENCE(alpha, standard_dev, size)Excel
CONFIDENCE.NORMCONFIDENCE.NORM(alpha, standard_dev, size)Excel
CONFIDENCE.TCONFIDENCE.T(alpha, standard_dev, size)Excel
CORRELCORREL(array1, array2)Excel
COUNTCOUNT(value1, [value2], ...)Excel
COUNTACOUNTA(value1, [value2], ...)Excel
COUNTBLANKCOUNTBLANK(range)Excel
COUNTIFCOUNTIF(range, criteria)Excel
COUNTIFSCOUNTIFS(criteria_range1, criteria1, ...)Excel
COVARCOVAR(array1, array2)Excel
COVARIANCE.PCOVARIANCE.P(array1, array2)Excel
COVARIANCE.SCOVARIANCE.S(array1, array2)Excel
CRITBINOMCRITBINOM(trials, probability_s, alpha)Unit
DEVSQDEVSQ(number1, ...)Excel
EXPON.DISTEXPON.DIST(x, lambda, cumulative)Excel
EXPONDISTEXPONDIST(x, lambda, cumulative)Excel
F.DISTF.DIST(x, deg_freedom1, deg_freedom2, cumulative)Unit
F.DIST.RTF.DIST.RT(x, deg_freedom1, deg_freedom2)Unit
F.INVF.INV(probability, deg_freedom1, deg_freedom2)Unit
F.INV.RTF.INV.RT(probability, deg_freedom1, deg_freedom2)Unit
F.TESTF.TEST(array1, array2)Unit
FDISTFDIST(x, deg_freedom1, deg_freedom2)Unit
FINVFINV(probability, deg_freedom1, deg_freedom2)Unit
FISHERFISHER(x)Excel
FISHERINVFISHERINV(y)Excel
FORECASTFORECAST(x, known_ys, known_xs)Excel
FORECAST.ETSFORECAST.ETS(target_date, values, timeline, [seasonality], [data_completion], [aggregation])ExcelThe 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.CONFINTFORECAST.ETS.CONFINT(target_date, values, timeline, [confidence_level], [seasonality], [data_completion], [aggregation])ExcelRMSE 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.SEASONALITYFORECAST.ETS.SEASONALITY(values, timeline, [data_completion], [aggregation])ExcelFirst 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.STATFORECAST.ETS.STAT(values, timeline, statistic_type, [seasonality], [data_completion], [aggregation])ExcelStep 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.LINEARFORECAST.LINEAR(x, known_ys, known_xs)Excel
FREQUENCYFREQUENCY(data_array, bins_array)Excel
FTESTFTEST(array1, array2)Unit
GAMMAGAMMA(number)Excel
GAMMA.DISTGAMMA.DIST(x, alpha, beta, cumulative)Excel
GAMMA.INVGAMMA.INV(probability, alpha, beta)Unit
GAMMADISTGAMMADIST(x, alpha, beta, cumulative)Unit
GAMMAINVGAMMAINV(probability, alpha, beta)Unit
GAMMALNGAMMALN(x)Excel
GAMMALN.PRECISEGAMMALN.PRECISE(x)Excel
GAUSSGAUSS(z)Excel
GEOMEANGEOMEAN(number1, ...)Excel
GROWTHGROWTH(known_y, [known_x], [new_x], [const])Unit
HARMEANHARMEAN(number1, ...)Excel
HYPGEOM.DISTHYPGEOM.DIST(sample_s, number_sample, population_s, number_pop, cumulative)Excel
HYPGEOMDISTHYPGEOMDIST(sample_s, number_sample, population_s, number_pop)Unit
INTERCEPTINTERCEPT(known_ys, known_xs)Excel
KURTKURT(number1, ...)Excel
LARGELARGE(array, k)Excel
LINESTLINEST(known_y, [known_x], [const], [stats])Unit
LOGESTLOGEST(known_y, [known_x], [const], [stats])Unit
LOGINVLOGINV(probability, mean, standard_dev)Unit
LOGNORM.DISTLOGNORM.DIST(x, mean, standard_dev, cumulative)Excel
LOGNORM.INVLOGNORM.INV(probability, mean, standard_dev)Excel
LOGNORMDISTLOGNORMDIST(x, mean, standard_dev)Unit
MAXMAX(number1, [number2], ...)Excel
MAXAMAXA(value1, [value2], ...)Excel
MAXIFSMAXIFS(max_range, criteria_range1, criteria1, ...)Excel
MEDIANMEDIAN(number1, [number2], ...)Excel
MINMIN(number1, [number2], ...)Excel
MINAMINA(value1, [value2], ...)Excel
MINIFSMINIFS(min_range, criteria_range1, criteria1, ...)Excel
MODEMODE(number1, [number2], ...)Excel
MODE.MULTMODE.MULT(number1, [number2], ...)Excel
MODE.SNGLMODE.SNGL(number1, [number2], ...)Excel
NEGBINOM.DISTNEGBINOM.DIST(number_f, number_s, probability_s, cumulative)Excel
NEGBINOMDISTNEGBINOMDIST(number_f, number_s, probability_s)Unit
NORM.DISTNORM.DIST(x, mean, standard_dev, cumulative)Excel
NORM.INVNORM.INV(probability, mean, standard_dev)Excel
NORM.S.DISTNORM.S.DIST(z, cumulative)Excel
NORM.S.INVNORM.S.INV(probability)Excel
NORMDISTNORMDIST(x, mean, standard_dev, cumulative)Excel
NORMINVNORMINV(probability, mean, standard_dev)Excel
NORMSDISTNORMSDIST(z)Excel
NORMSINVNORMSINV(probability)Excel
PEARSONPEARSON(array1, array2)Excel
PERCENTILEPERCENTILE(array, k)Excel
PERCENTILE.EXCPERCENTILE.EXC(array, k)Excel
PERCENTILE.INCPERCENTILE.INC(array, k)Excel
PERCENTRANKPERCENTRANK(array, x, [significance])Excel
PERCENTRANK.EXCPERCENTRANK.EXC(array, x, [significance])Excel
PERCENTRANK.INCPERCENTRANK.INC(array, x, [significance])Excel
PERMUTPERMUT(number, number_chosen)Excel
PERMUTATIONAPERMUTATIONA(number, number_chosen)Excel
PHIPHI(x)Excel
POISSONPOISSON(x, mean, cumulative)Excel
POISSON.DISTPOISSON.DIST(x, mean, cumulative)Excel
PROBPROB(x_range, prob_range, lower_limit, [upper_limit])Unit
QUARTILEQUARTILE(array, quart)Excel
QUARTILE.EXCQUARTILE.EXC(array, quart)Excel
QUARTILE.INCQUARTILE.INC(array, quart)Excel
RANKRANK(number, ref, [order])Excel
RANK.AVGRANK.AVG(number, ref, [order])Unit
RANK.EQRANK.EQ(number, ref, [order])Excel
RSQRSQ(known_ys, known_xs)Excel
SKEWSKEW(number1, ...)Excel
SKEW.PSKEW.P(number1, ...)Excel
SLOPESLOPE(known_ys, known_xs)Excel
SMALLSMALL(array, k)Excel
STANDARDIZESTANDARDIZE(x, mean, standard_dev)Excel
STDEVSTDEV(number1, [number2], ...)Excel
STDEV.PSTDEV.P(number1, [number2], ...)Excel
STDEV.SSTDEV.S(number1, [number2], ...)Excel
STDEVASTDEVA(number1, [number2], ...)Excel
STDEVPSTDEVP(number1, [number2], ...)Excel
STDEVPASTDEVPA(number1, [number2], ...)Excel
STEYXSTEYX(known_ys, known_xs)Excel
T.DISTT.DIST(x, deg_freedom, cumulative)Excel
T.DIST.2TT.DIST.2T(x, deg_freedom)Excel
T.DIST.RTT.DIST.RT(x, deg_freedom)Excel
T.INVT.INV(probability, deg_freedom)Excel
T.INV.2TT.INV.2T(probability, deg_freedom)Excel
T.TESTT.TEST(array1, array2, tails, type)Unit
TDISTTDIST(x, deg_freedom, tails)Excel
TINVTINV(probability, deg_freedom)Excel
TRENDTREND(known_y, [known_x], [new_x], [const])Unit
TRIMMEANTRIMMEAN(array, percent)Excel
TTESTTTEST(array1, array2, tails, type)Unit
VARVAR(number1, [number2], ...)Excel
VAR.PVAR.P(number1, [number2], ...)Excel
VAR.SVAR.S(number1, [number2], ...)Excel
VARAVARA(number1, [number2], ...)Excel
VARPVARP(number1, [number2], ...)Excel
VARPAVARPA(number1, [number2], ...)Excel
WEIBULLWEIBULL(x, alpha, beta, cumulative)Excel
WEIBULL.DISTWEIBULL.DIST(x, alpha, beta, cumulative)Excel
Z.TESTZ.TEST(array, x, [sigma])Unit
ZTESTZTEST(array, x, [sigma])Unit

Text ​

FunctionSyntaxVerificationNotes
ARRAYTOTEXTARRAYTOTEXT(array, [format])Excel
BAHTTEXTBAHTTEXT(number)Unit
CHARCHAR(number)Excel
CLEANCLEAN(text)Excel
CODECODE(text)Excel
CONCATCONCAT(text1, [text2], ...)Excel
CONCATENATECONCATENATE(text1, [text2], ...)Excel
DOLLARDOLLAR(number, [decimals])Excel
ENCODEURLENCODEURL(text)Unit
EXACTEXACT(text1, text2)Excel
FINDFIND(find_text, within_text, [start_num])Excel
FINDBFINDB(find_text, within_text, [start_num])Excel
FIXEDFIXED(number, [decimals], [no_commas])Excel
LEFTLEFT(text, [num_chars])Excel
LEFTBLEFTB(text, [num_chars])Excel
LENLEN(text)Excel
LENBLENB(text)Excel
LOWERLOWER(text)Excel
MIDMID(text, start_num, num_chars)Excel
MIDBMIDB(text, start_num, num_chars)Excel
NUMBERVALUENUMBERVALUE(text, [decimal_separator], [group_separator])Excel
PROPERPROPER(text)Excel
REGEXEXTRACTREGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])Unit
REGEXREPLACEREGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])Unit
REGEXTESTREGEXTEST(text, pattern, [case_sensitivity])Unit
REPLACEREPLACE(old_text, start_num, num_chars, new_text)Excel
REPLACEBREPLACEB(old_text, start_num, num_chars, new_text)Excel
REPTREPT(text, number_times)Excel
RIGHTRIGHT(text, [num_chars])Excel
RIGHTBRIGHTB(text, [num_chars])Excel
SEARCHSEARCH(find_text, within_text, [start_num])Excel
SEARCHBSEARCHB(find_text, within_text, [start_num])Excel
SUBSTITUTESUBSTITUTE(text, old_text, new_text, [instance_num])Excel
TT(value)Excel
TEXTTEXT(value, format_text)Excel
TEXTAFTERTEXTAFTER(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])Excel
TEXTBEFORETEXTBEFORE(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])Excel
TEXTJOINTEXTJOIN(delimiter, ignore_empty, text1, ...)Excel
TEXTSPLITTEXTSPLIT(text, col_delimiter, [row_delimiter], [ignore_empty], [match_mode], [pad_with])Excel
TRIMTRIM(text)Excel
UNICHARUNICHAR(number)Excel
UNICODEUNICODE(text)Excel
UPPERUPPER(text)Excel
VALUEVALUE(text)Excel
VALUETOTEXTVALUETOTEXT(value, [format])Excel

Web ​

FunctionSyntaxVerificationNotes
FILTERXMLFILTERXML(xml, xpath)Excel

Released under the Apache-2.0 License.