Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Function Reference

Every built-in function, by category. Names are case-insensitive; [x] is optional ([x=1]: 1 if omitted), … repeats the arguments before it, x OVER T is reduced over a category and INTO K lays a list result along one. Positions are 1-based. An error argument (#DIV/0!, #N/A, …) makes the result that error, except in the functions that test for errors. See The Formula Language for operators, types and dimensions.

Aggregations

Written F(Measure OVER Category): collapse one category. Each also has a scalar form over its arguments, listed under its category.

FunctionReturnsDescription
SUM(values OVER T)numberthe sum over a category (also DSUM)
AVERAGE(values OVER T)numberthe mean over a category (also AVG, DAVERAGE)
MIN(values OVER T)numberthe smallest value over a category (also DMIN)
MAX(values OVER T)numberthe largest value over a category (also DMAX)
PRODUCT(values OVER T)numberthe product over a category (also DPRODUCT)
SUMSQ(values OVER T)numberthe sum of squares over a category
AND(values OVER T)booleanwhether every value over a category is true
OR(values OVER T)booleanwhether any value over a category is true
XOR(values OVER T)booleanwhether an odd number of values over a category are true
FIRST(values OVER T)the branches' typethe value at the first item (in category order) that has one
LAST(values OVER T)the branches' typethe value at the last item that has one
S(values OVER T)textthe first value, as text (Quantrix)
TEXTJOIN(delimiter, ignore_empty, values OVER T)textthe values in item order joined by the delimiter (skipping empty text when ignore_empty is TRUE)

Logical

IF and the functions built on it evaluate only the branch they choose, so an error or missing cell in the other branch does not matter.

FunctionReturnsDescription
AND(logical1, …)booleanwhether every argument is true
OR(logical1, …)booleanwhether any argument is true
XOR(logical1, …)booleanwhether an odd number of arguments are true
IF(logical_test, value_if_true, [value_if_false])the branches' typethen where the test is true, else (or no cell) where it is false
IFS(logical_test1, value_if_true1, …)the branches' typethe value paired with the first true test
SWITCH(expression, value1, result1, …, [default])the branches' typethe result paired with the first value equal to the expression, else the default
CHOOSE(index_num, value1, …)the branches' typethe index_num-th value (1-based)
IFERROR(value, value_if_error)the branches' typethe value, or the alternative where it is an error
IFNA(value, value_if_na)the branches' typethe value, or the alternative where it is #N/A
CLEARERROR(value, [alternative])the branches' typethe value, or the alternative (or no cell) where it is an error
CLEARZERO(value, [alternative])numberthe value, or the alternative (or no cell) where it is zero
COALESCE(value1, …, default)the branches' typea cell wherever any argument that reads a measure has one: the first argument with a cell, else the last (the default)
BETWEEN(x, low, high, [inclusive])booleanwhether low ≤ x ≤ high (strict when inclusive is FALSE)
TRUE()booleanTRUE
FALSE()booleanFALSE
SCAN(initial_value, array OVER T, lambda)the branches' typeSCAN(initial_value, array OVER T, LAMBDA(acc, v, body)): the running fold along T, one value per item
REDUCE(initial_value, array OVER T, lambda)the branches' typeREDUCE(initial_value, array OVER T, LAMBDA(acc, v, body)): the fold's last value
LET(name, value, …, body)the branches' typeLET(name, value, …, body): the body with each name bound to its value
LAMBDA(p, …, body)the branches' typeLAMBDA(p, …, body): a function of its parameters, called on the spot or passed to MAP, REDUCE or SCAN
MAKEARRAY(rows, cols, lambda)the branches' typeMAKEARRAY(rows, cols, LAMBDA(r, c, body)): the body over the categories rows × cols, with r and c the item positions
BYROW(array OVER C, lambda)the branches' typeBYROW(array OVER C, LAMBDA(row, body)): the body per item of array's other categories, row being the values along C (the body reduces it: SUM(row), …) (also BYCOL)
MAP(array1, …, lambda)the branches' typeMAP(array1, …, LAMBDA(p, …, body)): the body applied element by element

Information and errors

FunctionReturnsDescription
ISERROR(value)booleanwhether the value is any error
ISERR(value)booleanwhether the value is an error other than #N/A
ISNA(value)booleanwhether the value is #N/A
NA()numberthe #N/A error
ERROR(name)numberthe error a code names ("#DIV/0!")
ERROR.TYPE(error_val)number1 #NULL!, 2 #DIV/0!, 3 #VALUE!, 4 #REF!, 5 #NAME?, 6 #NUM!, 7 #N/A; #N/A for a non-error
ISBLANK(value)booleanwhether the value is blank: always FALSE for a value, since a missing cell has none (ISBLANK("") is FALSE) (also ISEMPTY)
ISNUMBER(value)booleanwhether the value is a number; a date is one, as in Excel
ISTEXT(value)booleanwhether the value is text
ISNONTEXT(value)booleanwhether the value is not text (TRUE for an error)
ISLOGICAL(value)booleanwhether the value is a boolean
ISDATE(value)booleanwhether the value is a date
ISNUMBERORDATE(value)booleanwhether the value is a number or a date
ISEVEN(number)booleanwhether the integer part is even (also ISEVEN_ADD)
ISODD(number)booleanwhether the integer part is odd (also ISODD_ADD)
N(value)numberthe value as a number: a date's serial number, TRUE 1, FALSE and text 0
T(value)textthe value if it is text, else ""
TYPE(value)number1 number (or date), 2 text, 4 boolean, 16 error

Math and trigonometry

Angles are in radians.

FunctionReturnsDescription
SUM(number1, …)numberthe sum of the arguments
AVERAGE(number1, …)numberthe mean of the arguments
MIN(number1, …)numberthe smallest argument (also MIN2)
MAX(number1, …)numberthe largest argument (also MAX2)
PRODUCT(number1, …)numberthe product of the arguments
SUMSQ(number1, …)numberthe sum of the squares of the arguments
ABS(number)numberabsolute value
NEG(number)numbernegation
SIGN(number)number−1, 0 or 1
SQRT(number)numbersquare root (#NUM! below zero)
SQRTPI(number)number√(x·π)
EXP(number)numbere to the power x
EXPM1(x)numbereˣ − 1, accurate near 0
LN(number)numbernatural logarithm
LN1P(x)numberln(1 + x), accurate near 0
LOG(number, [base=10])numberlogarithm to a base (default 10)
LOG10(number)numberbase-10 logarithm
LOG2(x)numberbase-2 logarithm
POWER(number, power)numbernumber raised to power (same as ^)
MOD(number, divisor)numberremainder, with the divisor's sign
QUOTIENT(numerator, denominator)numberinteger part of a quotient
PI()numberπ
DEGREES(angle)numberradians to degrees
RADIANS(angle)numberdegrees to radians
SIN(number)numbersine (radians)
COS(number)numbercosine
TAN(number)numbertangent
ASIN(number)numberarcsine
ACOS(number)numberarccosine
ATAN(number)numberarctangent
ATAN2(x_num, y_num)numberangle of the point (x, y)
SINH(number)numberhyperbolic sine
COSH(number)numberhyperbolic cosine
TANH(number)numberhyperbolic tangent
ASINH(number)numberinverse hyperbolic sine
ACOSH(number)numberinverse hyperbolic cosine
ATANH(number)numberinverse hyperbolic tangent
SEC(number)numbersecant
CSC(number)numbercosecant
COT(number)numbercotangent
SECH(number)numberhyperbolic secant
CSCH(number)numberhyperbolic cosecant
COTH(number)numberhyperbolic cotangent
ACOT(number)numberinverse cotangent
ACOTH(number)numberinverse hyperbolic cotangent
SINPI(x)numbersin(πx), exact at integers
COSPI(x)numbercos(πx), exact at integers
TANPI(x)numbertan(πx), exact at integers
COTPI(x)numbercot(πx), exact at integers
HYPOT(number1, …)number√(Σ xᵢ²) without overflow
FACT(number)numberfactorial
FACTDOUBLE(number)numberdouble factorial n!!
COMBIN(number, number_chosen)numbercombinations of number items taken number_chosen at a time
COMBINA(number, number_chosen)numbercombinations with repetition
PERMUT(number, number_chosen)numberpermutations of number items taken number_chosen at a time
PERMUTATIONA(number, number_chosen)numberpermutations with repetition
GCD(number1, …)numbergreatest common divisor
LCM(number1, …)numberleast common multiple
MULTINOMIAL(number1, …)number(Σ n)! / Π n!
RAWSUBTRACT(number1, …)numberthe first argument minus the rest
INVSUMINV(number1, …)number1 / Σ(1/xᵢ)
GAMMA(number)numberthe gamma function Γ(x)
GAMMALN(x)numberln Γ(x), for x > 0 (also GAMMALN.PRECISE)
BETA(x, y)numberthe Euler beta function B(a, b)
BETALN(x, y)numberln
DIGAMMA(x)numberthe digamma function ψ(x)
IGAMMA(a, x, [lower=TRUE], [regularize=TRUE], [real=TRUE])numberthe incomplete gamma function of a and x: lower (default) or upper, regularized (default) or not; the imaginary part (real = FALSE) is 0
POCHHAMMER(x, n)numberthe rising factorial Γ(x + n) / Γ(x)
ERF(lower_limit, [upper_limit])numberthe error function erf(x), or erf(upper) − erf(lower)
ERF.PRECISE(x)numberthe error function erf(x)
ERFC(x)numberthe complementary error function 1 − erf(x) (also ERFC.PRECISE)
SUMA(values OVER T)numberthe sum, counting TRUE as 1 and text as 0
SUMPRODUCT(array1, … OVER T)numberΣ xᵢ·yᵢ·… over the rows where every measure has a cell
SUMX2MY2(array_x, array_y OVER T)numberΣ(x² − y²)
SUMX2PY2(array_x, array_y OVER T)numberΣ(x² + y²)
SUMXMY2(array_x, array_y OVER T)numberΣ(x − y)²
SERIESSUM(x, n, m, coefficients OVER T)numberΣ cᵢ·x^(n + i·m), the coefficients c in item order (i from 0)
POLYNOMIAL(x, coefficients OVER T)numberΣ cᵢ·xⁱ, the coefficients c in item order (the constant c₀ first)
PERCENTOF(data_subset, data_all OVER T)numberΣ subset / Σ all
LAMBERTW(x, [k=0])numberthe Lambert W function: the w with w·eʷ = x, on branch k 0 (the default, x ≥ −1/e) or −1 (−1/e ≤ x < 0)
AGM(a, b)numberthe arithmetic-geometric mean of a, b ≥ 0
GD(x)numberthe Gudermannian function: 2·atan(tanh(x/2))
ILOG(x, [base=10])numberthe integer logarithm: the largest k with baseᵏ ≤ x, for x > 0 and an integer base ≥ 2 (default 10)
REDUCEPI(x, e, [q])numberx reduced modulo π/2ᵉ as if π were exact: the xr with x = xr + j·π/2ᵉ and
FIB(n)numberthe n-th Fibonacci number, n ≥ 1 (truncated); #NUM! past n = 1476, where it overflows
ISPRIME(n)booleanwhether n is prime (FALSE below 2)
ITHPRIME(i)numberthe i-th prime, i from 1 to 10⁷ (Gnumeric: 10⁸)
PFACTOR(n)numberthe smallest prime factor of n ≥ 2 (#VALUE! below 2)
NT_D(n)numberthe number of divisors of n ≥ 1
NT_SIGMA(n)numberthe sum of the divisors of n ≥ 1
NT_PHI(n)numberEuler's totient: how many of 1…n are coprime to n ≥ 1
NT_MU(n)numberthe Möbius function of n ≥ 1: 0 if a square divides n, else (−1)^(number of prime factors)
NT_OMEGA(n)numberthe number of distinct prime factors of n ≥ 1
NT_PI(n)numberhow many primes are ≤ n (0 below 2; n up to 179 424 673, the 10⁷-th prime)
NT_RADICAL(n)numberthe product of the distinct prime factors of n ≥ 1
PARTITIONS(n)numberthe number of ways to write n ≥ 0 as a sum of positive integers (n up to 4000)
FLT.MAX()numberthe largest finite double, 1.7976931348623157e308
FLT.MIN()numberthe smallest positive normal double, 2.2250738585072014e-308
FLT.RADIX()numberthe floating-point base, 2
FLT.NEXTAFTER(x, y)numberthe next double after x toward y ("+" or "-" for the infinities); y itself if y = x
MDETERM(A OVER R, C)numberMDETERM(A OVER R, C): the determinant of the square matrix A (rows along R, columns along C); 0 if singular
LOGMDETERM(A OVER R, C)numberLOGMDETERM(A OVER R, C): ln
MINVERSE(A OVER R, C INTO R2, C2)numberMINVERSE(A OVER R, C INTO R2, C2): the inverse of the square matrix A, row by row; #NUM! if singular
MPSEUDOINVERSE(A OVER R, C, [threshold] INTO C2, R2)numberMPSEUDOINVERSE(A OVER R, C, [threshold] INTO C2, R2): the Moore–Penrose pseudo-inverse (C × R, row by row); singular values up to threshold (default 256 ε) times the largest count as zero
CHOLESKY(A OVER R, C INTO R2, C2)numberCHOLESKY(A OVER R, C INTO R2, C2): the lower-triangular L with L·Lᵀ = A for a symmetric positive-definite A (asymmetric pairs averaged), row by row; #NUM! where A is not positive definite
EIGEN(A OVER R, C INTO R2, C2)numberEIGEN(A OVER R, C INTO R2, C2): for a symmetric A (asymmetric pairs averaged), its eigenvalues largest magnitude first, then the matrix of their unit eigenvectors as columns: (n + 1) × n values, row by row
FOURIER(y OVER T, [inverse] INTO K)textFOURIER(y OVER T, [inverse] INTO K): Gnumeric's discrete Fourier transform (scaled by 1/n, zero-padded to a power of two), each value as complex text "a+bi"

Rounding

Rounding is decimal: ROUND(2.675, 2) is 2.68.

FunctionReturnsDescription
ROUND(number, [num_digits=0])numberto num_digits decimal places, halves away from zero
ROUNDUP(number, [num_digits=0])numberaway from zero to num_digits places
ROUNDDOWN(number, [num_digits=0])numbertoward zero to num_digits places
ROUNDSIG(value, digits)numberto digits significant digits
TRUNC(number, [num_digits=0])numbertruncate to num_digits places
INT(number)numberdown to an integer
FLOOR(number, [significance=1])numberdown to a multiple of significance (default 1)
CEIL(x)numberup to an integer
CEILING(number, [significance=1])numberup to a multiple of significance (default 1)
FLOOR.MATH(number, [significance=1], [mode=0])numberdown to a multiple; mode ≠ 0 rounds negatives toward zero
CEILING.MATH(number, [significance=1], [mode=0])numberup to a multiple; mode ≠ 0 rounds negatives away from zero
FLOOR.PRECISE(number, [significance=1])numberdown to a multiple, ignoring the multiple's sign
CEILING.PRECISE(number, [significance=1])numberup to a multiple, ignoring the multiple's sign
ISO.CEILING(number, [significance=1])numbersame as CEILING.PRECISE
MROUND(number, multiple)numberto the nearest multiple
EVEN(number)numberaway from zero to an even integer
ODD(number)numberaway from zero to an odd integer

Text

Lengths and positions count characters, not bytes.

FunctionReturnsDescription
CHAR(number)textthe character with code n (1–255)
UNICHAR(number)textthe Unicode character n
CODE(text)numberthe code of the first character
UNICODE(text)numberthe code point of the first character
CLEAN(text)textremove non-printing characters
CONCAT(text1, …)textjoin values as text (same as &)
CONCATENATE(text1, …)textjoin values as text
EXACT(text1, text2)booleancase-sensitive equality
FIND(find_text, within_text, [start_num=1])number1-based position of find_text in within_text, case-sensitive
SEARCH(find_text, within_text, [start_num=1])number1-based position, case-insensitive, with * and ? wildcards
LEFT(text, [num_chars=1])textthe first num_chars characters (default 1)
RIGHT(text, [num_chars=1])textthe last num_chars characters (default 1)
MID(text, start_num, num_chars)textnum_chars characters from a 1-based start_num
LEN(text)numberthe number of characters
LOWER(text)textlowercase
UPPER(text)textuppercase
PROPER(text)textcapitalize each word
REPLACE(old_text, start_num, num_chars, new_text)textreplace num_chars characters from a 1-based start_num
REPT(text, number_times)textrepeat text number_times times
SUBSTITUTE(text, old_text, new_text, [instance_num])textreplace every (or the instance_num-th) occurrence of old_text
TRIM(text)textremove leading, trailing and repeated spaces
VALUE(text)numbertext as a number
TEXTBEFORE(text, delimiter, [instance_num=1], [match_mode=0], [match_end=0], [if_not_found])texttext before the instance_num-th delimiter
TEXTAFTER(text, delimiter, [instance_num=1], [match_mode=0], [match_end=0], [if_not_found])texttext after the instance_num-th delimiter
TEXTBETWEEN(text, start_delimiter, end_delimiter)texttext between the first start delimiter and the next end delimiter
COUNTMATCHES(text, search)numberhow many times search occurs in text
TEXT(value, format_text)textformat with an Excel number-format code: 0 # ? . , % E+ E- "text" \c _c *c, General, ; sections (positive;negative;zero;text with @), colors; dates y m d h s AM/PM A/P. Unsupported (#VALUE!): conditions, locales, [h] elapsed time, fractional seconds, fractions, eras
FIXED(number, [decimals=2], [no_commas=FALSE])textrounded to decimals places (default 2) as text, with thousands commas unless no_commas
DOLLAR(number, [decimals=2])textas en-US currency text: $1,234.57, negatives in parentheses, decimals default 2
NUMBERVALUE(text, [decimal_separator="."], [group_separator=","])numbertext as a number with explicit decimal (default .) and group (default ,) separators
VALUETOTEXT(value, [format=0])texta value as text; format 1 quotes text
REGEX(text, expression, [replacement], [flags])textthe first match (#N/A if none), or with a replacement the text with the first match replaced; the fourth argument is "g" (replace all) or the occurrence to replace. Patterns use the Rust regex syntax, not ICU's
REGEXTEST(text, pattern, [case_sensitivity=0])booleanwhether the pattern matches; case_sensitivity 1 ignores case. Rust regex syntax
REGEXEXTRACT(text, pattern, [return_mode=0], [case_sensitivity=0])textthe first match (#N/A if none); only return mode 0, modes 1 and 2 (arrays) are #VALUE!. Rust regex syntax (also REGEX.EXTRACT)
REGEXREPLACE(text, pattern, replacement, [occurrence=0], [case_sensitivity=0])textreplace every match (or the occurrence-th, negative from the end) with $n-style replacement text. Rust regex syntax
TEXTSPLIT(text OVER T, col_delimiter, [row_delimiter], [ignore_empty=FALSE] INTO K)textthe parts of the text between col_delimiter matches (case-sensitive), in order; written without OVER, each cell splits on its own: TEXTSPLIT(Text, "," INTO Part). row_delimiter must be "" (splitting into rows is not supported yet); ignore_empty drops empty parts; empty text is #VALUE!
ARRAYTOTEXT(array OVER T, [format=0])textthe values as text in item order: format 0 "1, 2, a", format 1 {1,2,"a"}
ASC(text)textfull-width ASCII and katakana as half-width, as LibreOffice's ASC (a voiced kana becomes its letter and a sound mark)
JIS(text)texthalf-width ASCII and katakana as full-width, as LibreOffice's JIS (a letter and its sound mark join) (also DBCS)
BAHTTEXT(number)texta number as Thai baht and satang in words, rounded to the satang
ROT13(text)textASCII letters rotated 13 places; anything else unchanged
ENCODEURL(text)textUTF-8 percent-encoding of every byte but A–Z a–z 0–9 - _ . ~ (#VALUE! for empty text)
ROMAN(number, [form=0])text0–3999 in Roman numerals; form 0 classic (or TRUE) to 4 most concise (or FALSE)
ARABIC(text)numberRoman numerals (0–3999) as a number; case and surrounding spaces ignored, a leading - negates, "" is 0

Date and time

Dates are date-time values (UTC, millisecond precision). A number given where a date is wanted is a spreadsheet serial date (1 = 1900-01-01).

FunctionReturnsDescription
DATE(year, month, day)datea date; out-of-range months and days roll over, years 0–1899 add 1900
DATEVALUE(date_text)dateparse a date: 2025-01-31, 2025-01-31T09:30:00Z (the time is dropped) or 1/31/2025
TIME(hour, minute, second)datea time of day on serial day 0 (1899-12-30), wrapping at 24 hours
TIMEVALUE(time_text)numberparse a time (09:30, 9:30 PM, 2025-01-31T09:30:00Z) as a fraction of a day
YEAR(serial_number)numberthe year
MONTH(serial_number)numberthe month, 1–12
DAY(serial_number)numberthe day of the month
HOUR(serial_number)numberthe hour, 0–23
MINUTE(serial_number)numberthe minute
SECOND(serial_number)numberthe second, rounded
WEEKDAY(serial_number, [return_type=1])numberday of the week: type 1 Sunday=1 (default), 2 Monday=1, 3 Monday=0, 11–17 day 1 is Monday…Sunday
WEEKNUM(serial_number, [return_type=1])numberweek of the year (the week of January 1 is 1), weeks starting on type's day as in WEEKDAY (1, 2, 11–17); type 21 is the ISO week (also WEEKNUM_EXCEL2003)
ISOWEEKNUM(date)numberthe ISO 8601 week number
ISOYEAR(date)numberthe ISO 8601 week-numbering year
DAYOFYEAR(date)numberthe day of the year, 1–366
DAYNAME(date)textthe English weekday name of a date, or of a day number 1–7 (1 is Sunday)
MONTHNAME(month)textthe English name of month 1–12
DAYS(end_date, start_date)numberdays from start to end (end − start, times included)
DAYS360(start_date, end_date, [method=FALSE])numberdays between on a 360-day year, US (NASD) method or European when TRUE
DATEDIF(start_date, end_date, unit)numbercomplete "Y" years, "M" months or "D" days between; "YM", "YD", "MD" ignore the larger units
EDATE(start_date, months)datethe same day n months later (clamped to the month's end)
EOMONTH(start_date, months)datethe last day of the month n months later
YEARFRAC(start_date, end_date, [basis=0])numberthe fraction of a year between: basis 0 US 30/360 (default), 1 actual/actual, 2 actual/360, 3 actual/365, 4 European 30/360
NETWORKDAYS(start_date, end_date)numberworking days (Monday–Friday) from start to end inclusive; no holidays argument yet (it needs an aggregation) (also NETWORKDAYS_EXCEL2003)
NETWORKDAYS.INTL(start_date, end_date, [weekend=1])numberworking days with a weekend of 1–7 (two days), 11–17 (one day) or a "0000011" Monday-first mask; no holidays argument yet
WORKDAY(start_date, days)datethe date n working days (Monday–Friday) after start; no holidays argument yet
WORKDAY.INTL(start_date, days, [weekend=1])dateWORKDAY with a weekend as in NETWORKDAYS.INTL; no holidays argument yet
NOW()datethe current date and time (UTC); re-evaluated when the model is recalculated
TODAY()datethe current date (UTC midnight); re-evaluated when the model is recalculated
DAYSINMONTH(date)numberthe number of days in the date's month
DAYSINYEAR(date)numberthe number of days in the date's year
WEEKSINYEAR(date)numberthe number of ISO weeks (52 or 53) in the date's year
ISLEAPYEAR(date)booleanwhether the date's year is a leap year
MONTHS(start_date, end_date, type)numbermonths between: type 0 complete months, 1 calendar months
WEEKS(start_date, end_date, type)numberweeks between: type 0 complete weeks, 1 calendar (Monday) weeks
YEARS(start_date, end_date, type)numberyears between: type 0 complete years, 1 calendar years
UNIX2DATE(t)datethe date of a Unix time in seconds
DATE2UNIX(d)numbera date as Unix time in seconds
DUR2DAYS(duration)numbera duration (a number of days) in days
DUR2HOURS(duration)numbera duration in days as hours
DUR2MINUTES(duration)numbera duration in days as minutes
DUR2SECONDS(duration)numbera duration in days as seconds
DUR2MILLISECONDS(duration)numbera duration in days as milliseconds
DUR2WEEKS(duration)numbera duration in days as weeks
STRIPDURATION(duration)numberthe value (durations are already a number of days)
EASTERSUNDAY(year)dateEaster Sunday (Gregorian) of a year 1583–9956; 0–29 mean 2000–2029, 30–99 mean 1930–1999
ASCENSIONTHURSDAY(year)dateAscension Thursday, 39 days after Easter Sunday
ASHWEDNESDAY(year)dateAsh Wednesday, 46 days before Easter Sunday
GOODFRIDAY(year)dateGood Friday, 2 days before Easter Sunday
PENTECOSTSUNDAY(year)datePentecost Sunday, 49 days after Easter Sunday
DATE2JULIAN(date)numberthe Julian day number of a date
HDATE_JULIAN(year, month, day)numberthe Julian day number of Gregorian year, month, day (out-of-range days and months roll over)
HDATE(year, month, day)textthe Hebrew date of Gregorian year, month, day, as "20 Tebet 5784" (#VALUE! for a month outside 1–12 or a day outside 1–31)
HDATE_HEB(year, month, day)textthe Hebrew date of Gregorian year, month, day in Hebrew, as "כ׳ בְּטֵבֵת התשפ״ד"
HDATE_DAY(year, month, day)numberthe day of the Hebrew month of Gregorian year, month, day
HDATE_MONTH(year, month, day)numberthe Hebrew month of Gregorian year, month, day: 0 Tishri … 11 Elul, 12 Adar I, 13 Adar II
HDATE_YEAR(year, month, day)numberthe Hebrew year of Gregorian year, month, day
DATE2HDATE(date)textthe Hebrew date of a date, as "20 Tebet 5784"
DATE2HDATE_HEB(date)textthe Hebrew date of a date in Hebrew

Dimensional

Functions of a cell's position in a category, and the ordered (previous/next, running) forms.

FunctionReturnsDescription
POSITION(category)number1-based position of this cell's item along the category
@ITEM(category)textthe name of this cell's item along the category
@ID(category)textthe item name (Improv item names are unique within a category)
@ITEMCOUNT(category)numberthe number of items in the category
PREV(x, category, [n=1], [default])the branches' typethe value at the n-th previous item along the category (n = 1); off the end, the default, else no cell
NEXT(x, category, [n=1], [default])the branches' typethe value at the n-th next item along the category (n = 1); off the end, the default, else no cell
SEQUENCE(T, [start=1], [step=1])the branches' typeSEQUENCE(T, [start=1], [step=1]): start, start + step, … along T's items, (POSITION(T) - 1) * step + start
RELABEL(x, from_category, to_category)the branches' typex read with category From replaced by To, each item mapped to To's item of the same name (items with no namesake are dropped)
SWAP(x, category_a, category_b)the branches' typex read with categories A and B exchanged, items matched by name (W at Src = a, Dst = b is SWAP(W, Src, Dst) at Src = b, Dst = a)
FIXPOINT(init, lambda, [max_iter=100], [tolerance=1e-10])the branches' typeFIXPOINT(init, LAMBDA(r, body), [max_iter=100], [tolerance=1e-10]): r = init, then r = body(r) until the cells change by at most tolerance in total (Σ
FILL(x, default)the branches' typea cell at every item combination of x's categories: x where it has a cell, else the default
SORT(array OVER T, [sort_order=1] INTO K)the branches' typethe values in ascending order (descending when sort_order is -1)
UNIQUE(array OVER T, [exactly_once=FALSE] INTO K)the branches' typeeach distinct value once, in item order (only values that occur once when exactly_once is TRUE)
FILTER(array, include OVER T, [if_empty] INTO K)the branches' typethe values of array whose include is TRUE, in item order; if none, if_empty (else #N/A: Excel's #CALC!)
SORTBY(array, by_array1 OVER T, [sort_order1], … INTO K)the branches' typeSORTBY(array, by_array1 OVER T, [sort_order1], [by_array2, sort_order2], …): the values of array sorted by by_array1, ties by by_array2, … (stable; a key descends when its order is -1)
TAKE(array OVER T, rows INTO K)the branches' typethe first rows values in item order (the last -rows when rows is negative)
DROP(array OVER T, rows INTO K)the branches' typethe values TAKE leaves out: all but the first rows (the last -rows when rows is negative), in item order
SELECTS(values, tests OVER T, condition INTO K)the branches' typeQuantrix: the values whose test meets the condition (a criterion like ">5" or "a*", as in SUMIF), in item order
XLOOKUP(lookup_value, lookup_array OVER T, return_array, [if_not_found], [match_mode=0], [search_mode=1])the values' typereturn_array at the item where lookup_array matches lookup_value (match_mode 0 exact, -1 next smaller, 1 next larger, 2 wildcard; search_mode 1 first to last, -1 last to first, ±2 the same as ±1); if_not_found (else #N/A) when none does
XMATCH(lookup_value, lookup_array OVER T, [match_mode=0], [search_mode=1])numberthe 1-based item position along the category where lookup_array matches lookup_value (XLOOKUP's modes); #N/A when none does
MATCH(lookup_value, lookup_array OVER T, [match_type=1])numberthe 1-based item position of lookup_value: match_type 1 (default) the largest ≤ it, 0 the first equal (text with * and ? wildcards), -1 the smallest ≥ it; #N/A when none
LOOKUP(lookup_value, lookup_vector OVER T, result_vector)the values' typeresult_vector at the largest lookup_vector ≤ lookup_value (ascending); #N/A when none
INDEX(array OVER T, row_num)the branches' typethe value at the row_num-th item (1-based); #REF! out of range, #N/A where that item has no cell (also VALUEAT)
SELECT(values, keys OVER T, lookup)the branches' typevalues at the first item (in item order) whose key equals lookup; #N/A when none (SELECTLIST: a lookup over its own category gives one result per lookup) (also SELECTLIST)
SELECTBETWEEN(values, keys OVER T, low, high, [inclusive])the branches' typevalues at the first item whose key is between low and high (strictly when inclusive is FALSE); #N/A when none
SELECTGREATERTHAN(values, keys OVER T, lookup, [inclusive])the branches' typevalues at the first item whose key is > lookup (≥ when inclusive is TRUE); #N/A when none
SELECTLESSTHAN(values, keys OVER T, lookup, [inclusive])the branches' typevalues at the first item whose key is < lookup (≤ when inclusive is TRUE); #N/A when none

Statistical

FunctionReturnsDescription
MODE.MULT(values OVER T INTO K)numberevery most frequent value, in order of first occurrence (#N/A if none repeats)
LINEST(known_ys, known_xs1, … OVER T, [const=TRUE], [stats=FALSE] INTO K)numberLINEST(known_ys, known_xs1, [known_xs2, …] OVER T, [const], [stats]): the least-squares fit y = m1·x1 + … + b: mk, …, m1, b (const = FALSE: b = 0); with stats, Excel's 5×(k+1) block row by row (one x: m, b, se_m, se_b, r², se_y, F, df, ss_reg, ss_resid); INTO R, C lays it out as the block
LOGEST(known_ys, known_xs1, … OVER T, [const=TRUE], [stats=FALSE] INTO K)numberLOGEST(known_ys, known_xs1, [known_xs2, …] OVER T, [const], [stats]): y = b·m1^x1·…, fitted to ln y: mk, …, m1, b (const = FALSE: b = 1); with stats LINEST's block, for ln y
FREQUENCY(data_array OVER T, bin1, … INTO K)numbercounts of x in the bins given as numbers b1, b2, …: ≤ b1, (b1, b2], …, > bn (n + 1 counts; Excel takes the bins as a range)
BETA.DIST(x, alpha, beta, cumulative, [a=0], [b=1])numberthe beta distribution of x on [A, B] (default [0, 1]): density, or cumulative
BETADIST(x, alpha, beta, [a=0], [b=1])numberthe cumulative beta distribution of x on [A, B] (default [0, 1])
BETA.INV(probability, alpha, beta, [a=0], [b=1])numberthe beta quantile on [A, B] (default [0, 1]) (also BETAINV)
BINOM.DIST(number_s, trials, probability_s, cumulative)numberthe binomial probability of k successes in n trials: P(K = k), or P(K ≤ k) (also BINOMDIST)
BINOM.INV(trials, probability_s, alpha)numberthe smallest k with binomial P(K ≤ k) ≥ alpha, for n trials of probability p (also CRITBINOM)
BINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2])numberthe binomial P(k1 ≤ K ≤ k2) for n trials of probability p (k2 defaults to k1) (also B)
CHISQ.DIST(x, deg_freedom, cumulative)numberthe chi-square distribution: density, or left tail (also CHISQDIST)
CHISQ.DIST.RT(x, deg_freedom)numberthe chi-square right tail (also CHIDIST)
CHISQ.INV(probability, deg_freedom)numberthe chi-square left-tail quantile (also CHISQINV)
CHISQ.INV.RT(probability, deg_freedom)numberthe chi-square right-tail quantile (also CHIINV)
EXPON.DIST(x, lambda, cumulative)numberthe exponential distribution of rate λ: density, or cumulative (also EXPONDIST)
F.DIST(x, deg_freedom1, deg_freedom2, cumulative)numberthe F distribution: density, or left tail
F.DIST.RT(x, deg_freedom1, deg_freedom2)numberthe F right tail (also FDIST)
F.INV(probability, deg_freedom1, deg_freedom2)numberthe F left-tail quantile
F.INV.RT(probability, deg_freedom1, deg_freedom2)numberthe F right-tail quantile (also FINV)
GAMMA.DIST(x, alpha, beta, cumulative)numberthe gamma distribution of shape α and scale β: density, or cumulative (also GAMMADIST)
GAMMA.INV(probability, alpha, beta)numberthe gamma quantile (also GAMMAINV)
GAUSS(z)numberΦ(z) − 0.5: the standard normal probability between 0 and z
HYPGEOM.DIST(sample_s, number_sample, population_s, number_pop, cumulative)numberthe hypergeometric probability of k successes in a sample of n from N holding K: P(X = k), or P(X ≤ k)
HYPGEOMDIST(sample_s, number_sample, population_s, number_pop)numberthe hypergeometric probability P(X = k)
LOGNORM.DIST(x, mean, standard_dev, cumulative)numberthe log-normal distribution: density, or cumulative
LOGNORMDIST(x, mean, standard_dev)numberthe cumulative log-normal distribution
LOGNORM.INV(probability, mean, standard_dev)numberthe log-normal quantile (also LOGINV)
NEGBINOM.DIST(number_f, number_s, probability_s, cumulative)numberthe negative binomial probability of f failures before the s-th success: P(F = f), or P(F ≤ f)
NEGBINOMDIST(number_f, number_s, probability_s)numberthe negative binomial probability P(F = f)
NORM.DIST(x, mean, standard_dev, cumulative)numberthe normal distribution: density, or cumulative (also NORMDIST)
NORM.INV(probability, mean, standard_dev)numberthe normal quantile (also NORMINV)
NORM.S.DIST(z, cumulative)numberthe standard normal distribution: density, or cumulative
NORMSDIST(z)numberthe cumulative standard normal distribution Φ(z)
NORM.S.INV(probability)numberthe standard normal quantile (also NORMSINV)
PHI(x)numberthe standard normal density
POISSON.DIST(x, mean, cumulative)numberthe Poisson probability of k events at mean λ: P(X = k), or P(X ≤ k) (also POISSON)
T.DIST(x, deg_freedom, cumulative)numberStudent's t distribution: density, or left tail
T.DIST.RT(x, deg_freedom)numberStudent's t right tail
T.DIST.2T(x, deg_freedom)numberStudent's t two-tailed probability
TDIST(x, deg_freedom, tails)numberStudent's t right tail (tails = 1) or two-tailed probability (tails = 2), for x ≥ 0
T.INV(probability, deg_freedom)numberStudent's t left-tail quantile
T.INV.2T(probability, deg_freedom)numberStudent's t two-tailed quantile (also TINV)
WEIBULL.DIST(x, alpha, beta, cumulative)numberthe Weibull distribution of shape α and scale β: density, or cumulative (also WEIBULL)
FISHER(x)numberthe Fisher transformation atanh(x)
FISHERINV(y)numberthe inverse Fisher transformation tanh(y)
CONFIDENCE.NORM(alpha, standard_dev, size)numberthe half-width of a normal confidence interval at significance alpha, for sd and sample size n (also CONFIDENCE)
CONFIDENCE.T(alpha, standard_dev, size)numberthe half-width of a Student's t confidence interval at significance alpha, for sd and sample size n
STANDARDIZE(x, mean, standard_dev)numberthe z-score (x − mean) / sd
AVERAGEA(values OVER T)numberthe mean, counting TRUE as 1 and text and FALSE as 0
AVERAGEIF(range OVER T, criteria, [average_range])numberthe mean of average_range (else range) where range meets the criteria
AVERAGEIFS(average_range, criteria_range1 OVER T, criteria1, …)numberthe mean of x where every criteria measure meets its criterion
AVEDEV(values OVER T)numberthe mean absolute deviation from the mean
COUNT(values OVER T)numberthe number of numbers (and dates) (also DCOUNT)
COUNTA(values OVER T)numberthe number of cells (errors included) (also DCOUNTA)
COUNTUNIQUE(values OVER T)numberthe number of distinct values, SQL's count(DISTINCT …) (text compares case-sensitively; an error among them is the result)
COUNTBLANK(range OVER T)numberthe number of items with no cell (or empty text)
COUNTIF(range OVER T, criteria)numberthe number of cells meeting the criterion (">5", "<>x", "a*", 3)
COUNTIFS(criteria_range1 OVER T, criteria1, …)numberthe number of rows where every criteria measure meets its criterion
SUMIF(range OVER T, criteria, [sum_range])numberthe sum of sum_range (else range) where range meets the criteria
SUMIFS(sum_range, criteria_range1 OVER T, criteria1, …)numberthe sum of x where every criteria measure meets its criterion
MAXA(values OVER T)numberthe largest value, counting TRUE as 1 and text and FALSE as 0
MAXIFS(max_range, criteria_range1 OVER T, criteria1, …)numberthe largest x where every criteria measure meets its criterion (0 if none)
MINA(values OVER T)numberthe smallest value, counting TRUE as 1 and text and FALSE as 0
MINIFS(min_range, criteria_range1 OVER T, criteria1, …)numberthe smallest x where every criteria measure meets its criterion (0 if none)
MEDIAN(values OVER T)numberthe median
MODE(values OVER T)numberthe most frequent value (the first in item order on a tie; #N/A if none repeats) (also MODE.SNGL)
GEOMEAN(values OVER T)numberthe geometric mean (#NUM! for a value ≤ 0)
HARMEAN(values OVER T)numberthe harmonic mean (#NUM! for a value ≤ 0)
TRIMMEAN(array OVER T, percent)numberthe mean without the fraction of values at the tails (rounded down to an even count)
DEVSQ(values OVER T)numberΣ(x − mean)²
STDEV(values OVER T)numberthe sample standard deviation (also STDEV.S, DSTDEV)
STDEVP(values OVER T)numberthe population standard deviation (also STDEV.P, DSTDEVP)
STDEVA(values OVER T)numberthe sample standard deviation, counting TRUE as 1 and text and FALSE as 0
STDEVPA(values OVER T)numberthe population standard deviation, counting TRUE as 1 and text and FALSE as 0
VAR(values OVER T)numberthe sample variance (also VAR.S, DVAR)
VARP(values OVER T)numberthe population variance (also VAR.P, DVARP)
VARA(values OVER T)numberthe sample variance, counting TRUE as 1 and text and FALSE as 0
VARPA(values OVER T)numberthe population variance, counting TRUE as 1 and text and FALSE as 0
KURT(values OVER T)numberthe sample excess kurtosis
KURTP(values OVER T)numberthe population excess kurtosis
SKEW(values OVER T)numberthe sample skewness
SKEWP(values OVER T)numberthe population skewness (also SKEW.P)
LARGE(array OVER T, k)numberthe k-th largest value
SMALL(array OVER T, k)numberthe k-th smallest value
PERCENTILE(array OVER T, k)numberthe p-th percentile, interpolated, 0 ≤ p ≤ 1 (also PERCENTILE.INC)
PERCENTILE.EXC(array OVER T, k)numberthe p-th percentile, exclusive of 0 and 1
QUARTILE(array OVER T, quart)numberthe q-th quartile (0 min … 4 max) (also QUARTILE.INC)
QUARTILE.EXC(array OVER T, quart)numberthe q-th quartile (1 … 3), exclusive
PROB(x_range, prob_range OVER T, lower_limit, [upper_limit])numberΣ p over the values x in [low, high] (x = low without high); #NUM! unless every 0 < p ≤ 1 and Σ p = 1
SUBTOTAL(function_num, values OVER T)numberthe reduction a code picks: 1 AVERAGE, 2 COUNT, 3 COUNTA, 4 MAX, 5 MIN, 6 PRODUCT, 7 STDEV, 8 STDEVP, 9 SUM, 10 VAR, 11 VARP (101–111 the same)
AGGREGATE(function_num, options, array OVER T, [k])numberSUBTOTAL's codes and 12 MEDIAN, 13 MODE, 14 LARGE, 15 SMALL, 16 PERCENTILE, 17 QUARTILE, 18 PERCENTILE.EXC, 19 QUARTILE.EXC; options 2, 3, 6, 7 skip errors
RANK(ref OVER T, [order=0])numbereach item's rank among the values (order 0, the default, ranks the largest 1) (also RANK.EQ)
RANK.AVG(ref OVER T, [order=0])numbereach item's rank, ties sharing their mean rank
PERCENTRANK(array OVER T, [x], [significance=3])numbereach item's (or x's) rank as a fraction 0 … 1, to significance (3) significant digits (also PERCENTRANK.INC)
RANK.DENSE(ref OVER T, [order=0])numbereach item's dense rank: tied values share a rank and the next value ranks one after them, SQL's dense_rank() (order 0, the default, ranks the largest 1)
PERCENTRANK.EXC(array OVER T, [x], [significance=3])numbereach item's (or x's) rank as a fraction, exclusive of 0 and 1
TREND(known_ys, known_xs OVER T, [const=TRUE])numbereach item's value on the least-squares line of y on x, at its own x (through 0 if const is FALSE)
GROWTH(known_ys, known_xs OVER T, [const=TRUE])numbereach item's value on the least-squares curve y = b·mˣ (fitting ln y; b = 1 if const is FALSE)
CORREL(array1, array2 OVER T)numberthe Pearson correlation of x and y (also PEARSON)
RSQ(known_ys, known_xs OVER T)numberthe square of the Pearson correlation
COVAR(array1, array2 OVER T)numberthe population covariance (also COVARIANCE.P)
COVARIANCE.S(array1, array2 OVER T)numberthe sample covariance
SLOPE(known_ys, known_xs OVER T)numberthe least-squares slope of y on x
INTERCEPT(known_ys, known_xs OVER T)numberthe least-squares intercept of y on x
STEYX(known_ys, known_xs OVER T)numberthe standard error of the predicted y
FORECAST(x, known_ys, known_xs OVER T)numberthe least-squares line of y on x at x0 (also FORECAST.LINEAR)
EXPA(known_ys, known_xs OVER T, [simple])numberA of the fit y = A·e^(Bx): least squares of ln y weighted by y (simple = TRUE: unweighted, as LOGEST)
EXPB(known_ys, known_xs OVER T, [simple])numberB of the fit y = A·e^(Bx)
EXPFORECAST(x, known_ys, known_xs OVER T, [simple])numberthe fit y = A·e^(Bx) at x0
CHITEST(actual_range, expected_range OVER T)numberthe χ² test p-value of actual against expected (also CHISQ.TEST)
FTEST(array1, array2 OVER T)numberthe two-tailed F-test p-value that a and b have the same variance (also F.TEST)
TTEST(array1, array2 OVER T, tails, type)numberthe t-test p-value (tails 1 or 2; type 1 paired, 2 equal variance, 3 unequal) (also T.TEST)
ZTEST(array OVER T, x, [sigma])numberthe one-tailed z-test p-value of the mean against μ0 (σ defaults to the sample's) (also Z.TEST)
AUTOCORREL(values OVER T)numberthe lag-1 autocorrelation in item order (GSL) (also GSL_STATS_LAG1_AUTOCORRELATION)
DGET(values OVER T)the branches' typethe single value (with WHERE, the single match); #NUM! when more than one (a WHERE that keeps none leaves no cell)
PROBBLOCK(traffic, circuits)numberthe Erlang-B probability that a call is blocked when traffic erlangs load circuits (1 to 10⁶; truncated below 100)
OFFTRAF(traffic, circuits)numberthe offered traffic that carries traffic erlangs on circuits (#VALUE! if circuits cannot carry it)
DIMCIRC(traffic, gos)numberthe fewest circuits (up to 10⁶) that carry traffic erlangs with blocking at most gos, 0 < gos ≤ 1
OFFCAP(circuits, gos)numberthe traffic circuits carry with blocking gos, 0 < gos < 1
BERNOULLI(k, p)numberthe Bernoulli probability of k (0 or 1) for success probability p
CAUCHY(x, a, cumulative)numberthe Cauchy distribution of scale a at x: density, or (as Gnumeric) the right tail P(X > x)
EXPPOWDIST(x, a, b)numberthe exponential-power density of scale a and exponent b at x
GEOMDIST(k, p, cumulative)numberthe geometric probability of k failures before the first success: P(K = k), or P(K ≤ k)
LANDAU(x)numberthe Landau density at x (Kölbig and Schorr's approximation, about 9 digits)
LAPLACE(x, a)numberthe Laplace density of width a at x
LOGISTIC(x, a)numberthe logistic density of scale a at x
PARETO(x, a, b)numberthe Pareto density of exponent a and scale b at x
RAYLEIGH(x, sigma)numberthe Rayleigh density of scale σ at x
RAYLEIGHTAIL(x, a, sigma)numberthe Rayleigh tail density (lower limit a, scale σ) at x
SNORM.DIST.RANGE(x1, x2)numberΦ(x2) − Φ(x1): the standard normal probability between x1 and x2
OWENT(h, a)numberOwen's T function T(h, a)
CUM_BIV_NORM_DIST(a, b, rho)numberthe standard bivariate normal P(X ≤ a, Y ≤ b) with correlation ρ,
R.DBETA(x, shape1, shape2, [give_log])numberthe density at x of the beta distribution of shapes shape1 and shape2, or its logarithm (give_log)
R.PBETA(x, shape1, shape2, [lower_tail], [log_p])numberP(X ≤ x) for the beta distribution of shapes shape1 and shape2, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QBETA(p, shape1, shape2, [lower_tail], [log_p])numberthe quantile of the beta distribution of shapes shape1 and shape2: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DBINOM(x, size, prob, [give_log])numberthe probability mass at x of the binomial distribution of size trials of success probability prob, or its logarithm (give_log)
R.PBINOM(x, size, prob, [lower_tail], [log_p])numberP(X ≤ x) for the binomial distribution of size trials of success probability prob, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QBINOM(p, size, prob, [lower_tail], [log_p])numberthe quantile of the binomial distribution of size trials of success probability prob: the smallest x with P(X ≤ x) ≥ p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DCAUCHY(x, location, scale, [give_log])numberthe density at x of the Cauchy distribution of location and scale, or its logarithm (give_log)
R.PCAUCHY(x, location, scale, [lower_tail], [log_p])numberP(X ≤ x) for the Cauchy distribution of location and scale, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QCAUCHY(p, location, scale, [lower_tail], [log_p])numberthe quantile of the Cauchy distribution of location and scale: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DCHISQ(x, df, [give_log])numberthe density at x of the chi-square distribution of df degrees of freedom, or its logarithm (give_log)
R.PCHISQ(x, df, [lower_tail], [log_p])numberP(X ≤ x) for the chi-square distribution of df degrees of freedom, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QCHISQ(p, df, [lower_tail], [log_p])numberthe quantile of the chi-square distribution of df degrees of freedom: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DEXP(x, scale, [give_log])numberthe density at x of the exponential distribution of the given scale (mean), or its logarithm (give_log)
R.PEXP(x, scale, [lower_tail], [log_p])numberP(X ≤ x) for the exponential distribution of the given scale (mean), or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QEXP(p, scale, [lower_tail], [log_p])numberthe quantile of the exponential distribution of the given scale (mean): the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DF(x, df1, df2, [give_log])numberthe density at x of the F distribution of df1 and df2 degrees of freedom, or its logarithm (give_log)
R.PF(x, df1, df2, [lower_tail], [log_p])numberP(X ≤ x) for the F distribution of df1 and df2 degrees of freedom, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QF(p, df1, df2, [lower_tail], [log_p])numberthe quantile of the F distribution of df1 and df2 degrees of freedom: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DGAMMA(x, shape, scale, [give_log])numberthe density at x of the gamma distribution of shape and scale, or its logarithm (give_log)
R.PGAMMA(x, shape, scale, [lower_tail], [log_p])numberP(X ≤ x) for the gamma distribution of shape and scale, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QGAMMA(p, shape, scale, [lower_tail], [log_p])numberthe quantile of the gamma distribution of shape and scale: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DGEOM(x, prob, [give_log])numberthe probability mass at x of the geometric distribution (failures before the first success) of success probability prob, or its logarithm (give_log)
R.PGEOM(x, prob, [lower_tail], [log_p])numberP(X ≤ x) for the geometric distribution (failures before the first success) of success probability prob, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QGEOM(p, prob, [lower_tail], [log_p])numberthe quantile of the geometric distribution (failures before the first success) of success probability prob: the smallest x with P(X ≤ x) ≥ p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DGUMBEL(x, mu, beta, [give_log])numberthe density at x of the Gumbel distribution of location μ and scale β, or its logarithm (give_log)
R.PGUMBEL(x, mu, beta, [lower_tail], [log_p])numberP(X ≤ x) for the Gumbel distribution of location μ and scale β, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QGUMBEL(p, mu, beta, [lower_tail], [log_p])numberthe quantile of the Gumbel distribution of location μ and scale β: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DHYPER(x, m, n, k, [give_log])numberthe probability mass at x of the hypergeometric distribution of the white balls among k drawn from m white and n black, or its logarithm (give_log)
R.PHYPER(x, m, n, k, [lower_tail], [log_p])numberP(X ≤ x) for the hypergeometric distribution of the white balls among k drawn from m white and n black, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QHYPER(p, m, n, k, [lower_tail], [log_p])numberthe quantile of the hypergeometric distribution of the white balls among k drawn from m white and n black: the smallest x with P(X ≤ x) ≥ p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DLNORM(x, meanlog, sdlog, [give_log])numberthe density at x of the log-normal distribution of log-mean and log-sd, or its logarithm (give_log)
R.PLNORM(x, meanlog, sdlog, [lower_tail], [log_p])numberP(X ≤ x) for the log-normal distribution of log-mean and log-sd, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QLNORM(p, meanlog, sdlog, [lower_tail], [log_p])numberthe quantile of the log-normal distribution of log-mean and log-sd: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DNBINOM(x, size, prob, [give_log])numberthe probability mass at x of the negative binomial distribution (failures before the size-th success) of success probability prob, or its logarithm (give_log)
R.PNBINOM(x, size, prob, [lower_tail], [log_p])numberP(X ≤ x) for the negative binomial distribution (failures before the size-th success) of success probability prob, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QNBINOM(p, size, prob, [lower_tail], [log_p])numberthe quantile of the negative binomial distribution (failures before the size-th success) of success probability prob: the smallest x with P(X ≤ x) ≥ p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DNORM(x, mean, sd, [give_log])numberthe density at x of the normal distribution of mean μ and standard deviation σ, or its logarithm (give_log)
R.PNORM(x, mean, sd, [lower_tail], [log_p])numberP(X ≤ x) for the normal distribution of mean μ and standard deviation σ, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QNORM(p, mean, sd, [lower_tail], [log_p])numberthe quantile of the normal distribution of mean μ and standard deviation σ: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DPOIS(x, lambda, [give_log])numberthe probability mass at x of the Poisson distribution of mean λ, or its logarithm (give_log)
R.PPOIS(x, lambda, [lower_tail], [log_p])numberP(X ≤ x) for the Poisson distribution of mean λ, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QPOIS(p, lambda, [lower_tail], [log_p])numberthe quantile of the Poisson distribution of mean λ: the smallest x with P(X ≤ x) ≥ p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DRAYLEIGH(x, scale, [give_log])numberthe density at x of the Rayleigh distribution of the given scale, or its logarithm (give_log)
R.PRAYLEIGH(x, scale, [lower_tail], [log_p])numberP(X ≤ x) for the Rayleigh distribution of the given scale, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QRAYLEIGH(p, scale, [lower_tail], [log_p])numberthe quantile of the Rayleigh distribution of the given scale: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DSNORM(x, shape, location, scale, [give_log])numberthe density at x of the skew-normal distribution of shape, location and scale, or its logarithm (give_log)
R.PSNORM(x, shape, location, scale, [lower_tail], [log_p])numberP(X ≤ x) for the skew-normal distribution of shape, location and scale, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QSNORM(p, shape, location, scale, [lower_tail], [log_p])numberthe quantile of the skew-normal distribution of shape, location and scale: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DST(x, df, shape, [give_log])numberthe density at x of the skew-t distribution of df degrees of freedom and the given shape, or its logarithm (give_log)
R.PST(x, df, shape, [lower_tail], [log_p])numberP(X ≤ x) for the skew-t distribution of df degrees of freedom and the given shape, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QST(p, df, shape, [lower_tail], [log_p])numberthe quantile of the skew-t distribution of df degrees of freedom and the given shape: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DT(x, df, [give_log])numberthe density at x of the Student t distribution of df degrees of freedom, or its logarithm (give_log)
R.PT(x, df, [lower_tail], [log_p])numberP(X ≤ x) for the Student t distribution of df degrees of freedom, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QT(p, df, [lower_tail], [log_p])numberthe quantile of the Student t distribution of df degrees of freedom: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.DWEIBULL(x, shape, scale, [give_log])numberthe density at x of the Weibull distribution of shape and scale, or its logarithm (give_log)
R.PWEIBULL(x, shape, scale, [lower_tail], [log_p])numberP(X ≤ x) for the Weibull distribution of shape and scale, or P(X > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QWEIBULL(p, shape, scale, [lower_tail], [log_p])numberthe quantile of the Weibull distribution of shape and scale: the x with P(X ≤ x) = p, or of P(X > x) (lower_tail = FALSE), p may be a logarithm (log_p)
R.PTUKEY(x, nmeans, df, [nranges=1], [lower_tail], [log_p])numberP(Q ≤ x) for the largest of nranges (default 1) studentized ranges of nmeans means with df degrees of freedom, or P(Q > x) (lower_tail = FALSE), or its logarithm (log_p)
R.QTUKEY(p, nmeans, df, [nranges=1], [lower_tail], [log_p])numberthe quantile of the studentized range of nmeans means with df degrees of freedom, the largest of nranges (default 1): the x with P(Q ≤ x) = p, or of P(Q > x) (lower_tail = FALSE), p may be a logarithm (log_p)
SSMEDIAN(array OVER T, [interval=1])numberthe median of grouped data (Gnumeric): each value the midpoint of an interval of width interval (default 1), interpolated within the median's interval
INTERPOLATION(xs, ys OVER T, target, [method], [next])numberINTERPOLATION(xs, ys OVER T, target, [method], [next]): ys interpolated at target (Gnumeric): method 0 linear, 2 staircase, 4 natural cubic spline; 1, 3, 5 the same averaged over [target, next]
HPFILTER(values OVER T, [lambda=1600])numbereach item's trend under the Hodrick–Prescott filter with smoothing λ (default 1600); the cycle is y − trend; needs 6 values
ADTEST(values OVER T)numberthe p-value of the Anderson–Darling test of normality (Gnumeric; 8 values or more)
CVMTEST(values OVER T)numberthe p-value of the Cramér–von Mises test of normality (Gnumeric; 8 values or more)
LKSTEST(values OVER T)numberthe p-value of the Lilliefors (Kolmogorov–Smirnov) test of normality (Gnumeric; 5 values or more)
SFTEST(values OVER T)numberthe p-value of the Shapiro–Francia test of normality (Gnumeric; 5 to 5000 values)
ADTEST.STAT(values OVER T)numberthe Anderson–Darling statistic A² (adjusted for n), Gnumeric's ADTEST second value
CVMTEST.STAT(values OVER T)numberthe Cramér–von Mises statistic W², Gnumeric's CVMTEST second value
LKSTEST.STAT(values OVER T)numberthe Lilliefors statistic D, Gnumeric's LKSTEST second value
SFTEST.STAT(values OVER T)numberthe Shapiro–Francia statistic W', Gnumeric's SFTEST second value
LOGREG(known_ys, known_xs OVER T, [affine], [stats] INTO K)numberLOGREG(known_ys, known_xs OVER T, [affine], [stats] INTO K): the least-squares fit y = m·ln x + b (Gnumeric): m, b (affine = FALSE: b = 0); with stats LINEST's 5×2 block for ln x, row by row
LOGFIT(known_ys, known_xs OVER T INTO K)numberLOGFIT(known_ys, known_xs OVER T INTO K): the fit y = a + b·ln(sign·(x − c)) by Gnumeric's trial-and-error search: sign, a, b, c and the sum of squared residuals; #NUM! if the points are not logarithmic enough
PERIODOGRAM(y OVER T, [filter] INTO K)numberPERIODOGRAM(y OVER T, [filter] INTO K): the magnitudes of the first half of the Fourier transform (Gnumeric), after a window: 0 none, 1 Bartlett, 2 Hann, 3 Welch
CRONBACH(x1, x2, … OVER T)numberCRONBACH(x1, x2, … OVER T): Cronbach's α of the items x1, x2, … (one row per respondent; population variances, as Gnumeric)
FORECAST.ETS(target_date, values, timeline OVER T, [seasonality], [data_completion], [aggregation])numberFORECAST.ETS(target_date, values, timeline OVER T, [seasonality], [data_completion], [aggregation]): the additive Holt–Winters (triple exponential smoothing) forecast at target_date, LibreOffice's algorithm; seasonality 1 detects the season, 0 none; a target_date before the timeline's end is #NUM! (also FORECAST.ETS.ADD)
FORECAST.ETS.MULT(target_date, values, timeline OVER T, [seasonality], [data_completion], [aggregation])numberFORECAST.ETS.MULT(target_date, values, timeline OVER T, …): FORECAST.ETS with multiplicative seasons (LibreOffice)
FORECAST.ETS.CONFINT(target_date, values, timeline OVER T, [confidence_level=0.95], [seasonality], [data_completion], [aggregation])numberFORECAST.ETS.CONFINT(target_date, values, timeline OVER T, [confidence_level], [seasonality], …): the half-width of the prediction interval (default confidence_level 0.95); only for seasonality 0 (LibreOffice simulates seasonal intervals randomly): otherwise #N/A (also FORECAST.ETS.PI.ADD)
FORECAST.ETS.PI.MULT(target_date, values, timeline OVER T, [confidence_level=0.95], [seasonality], [data_completion], [aggregation])numberFORECAST.ETS.PI.MULT(target_date, values, timeline OVER T, …): FORECAST.ETS.CONFINT for the multiplicative model (the same for seasonality 0, the only one supported)
FORECAST.ETS.STAT(values, timeline OVER T, statistic_type, [seasonality], [data_completion], [aggregation])numberFORECAST.ETS.STAT(values, timeline OVER T, statistic_type, …): a statistic of FORECAST.ETS's fit: 1 α, 2 β (trend), 3 γ (season), 4 MASE, 5 SMAPE, 6 MAE, 7 RMSE, 8 step, 9 seasonality (also FORECAST.ETS.STAT.ADD)
FORECAST.ETS.STAT.MULT(values, timeline OVER T, statistic_type, [seasonality], [data_completion], [aggregation])numberFORECAST.ETS.STAT.MULT(values, timeline OVER T, statistic_type, …): FORECAST.ETS.STAT of the multiplicative model
FORECAST.ETS.SEASONALITY(values, timeline OVER T, [data_completion], [aggregation])numberFORECAST.ETS.SEASONALITY(values, timeline OVER T, [data_completion], [aggregation]): the season length FORECAST.ETS detects (1: none)
LEVERAGE(A OVER R, C INTO K)numberLEVERAGE(A OVER R, C INTO K): the regression leverages, the diagonal of A·(AᵀA)⁻¹·Aᵀ, one per row of A (Gnumeric); #NUM! if A's columns are dependent

Financial

Rates are per period; cash flows are in item order along their OVER category.

FunctionReturnsDescription
FV(rate, nper, pmt, [pv], [type])numberfuture value: FV(rate, nper, pmt, [pv], [type])
PV(rate, nper, pmt, [fv], [type])numberpresent value: PV(rate, nper, pmt, [fv], [type])
PMT(rate, nper, pv, [fv], [type])numberpayment per period: PMT(rate, nper, pv, [fv], [type])
IPMT(rate, per, nper, pv, [fv], [type])numberinterest part of payment per: IPMT(rate, per, nper, pv, [fv], [type])
PPMT(rate, per, nper, pv, [fv], [type])numberprincipal part of payment per: PPMT(rate, per, nper, pv, [fv], [type])
NPER(rate, pmt, pv, [fv], [type])numbernumber of periods: NPER(rate, pmt, pv, [fv], [type])
RATE(nper, pmt, pv, [fv], [type], [guess])numberrate per period (iterative): RATE(nper, pmt, pv, [fv], [type], [guess])
CUMIPMT(rate, nper, pv, start_period, end_period, type)numberinterest paid from period start to end: CUMIPMT(rate, nper, pv, start_period, end_period, type) (also CUMIPMT_ADD)
CUMPRINC(rate, nper, pv, start_period, end_period, type)numberprincipal paid from period start to end: CUMPRINC(rate, nper, pv, start_period, end_period, type) (also CUMPRINC_ADD)
ISPMT(rate, per, nper, pv)numberinterest of period per with straight-line principal: ISPMT(rate, per, nper, pv)
EFFECT(nominal_rate, npery)numbereffective annual rate of a nominal rate compounded npery times (also EFFECT_ADD)
NOMINAL(effect_rate, npery)numbernominal annual rate of an effective rate compounded npery times (also NOMINAL_ADD)
PDURATION(rate, pv, fv)numberperiods for pv to grow to fv at rate: PDURATION(rate, pv, fv) (also G_DURATION)
RRI(nper, pv, fv)numberequivalent growth rate per period: RRI(nper, pv, fv)
DOLLARDE(fractional_dollar, fraction)numbera fractional dollar price (1.02 with fraction 16 is 1 and 2/16) as a decimal
DOLLARFR(decimal_dollar, fraction)numbera decimal dollar price as a fraction (in the integer part's units)
SLN(cost, salvage, life)numberstraight-line depreciation per period: SLN(cost, salvage, life)
SYD(cost, salvage, life, per)numbersum-of-years'-digits depreciation: SYD(cost, salvage, life, per)
DB(cost, salvage, life, period, [month=12])numberfixed declining balance: DB(cost, salvage, life, period, [month=12])
DDB(cost, salvage, life, period, [factor=2])numberdouble declining balance: DDB(cost, salvage, life, period, [factor=2])
VDB(cost, salvage, life, start_period, end_period, [factor=2], [no_switch])numberdeclining balance between two periods: VDB(cost, salvage, life, start_period, end_period, [factor=2], [no_switch])
AMORDEGRC(cost, date_purchased, first_period, salvage, period, rate, [basis])numberFrench degressive depreciation: AMORDEGRC(cost, date_purchased, first_period, salvage, period, rate, [basis])
AMORLINC(cost, date_purchased, first_period, salvage, period, rate, [basis])numberFrench linear depreciation: AMORLINC(cost, date_purchased, first_period, salvage, period, rate, [basis])
ACCRINT(issue, first_interest, settlement, rate, par, frequency, [basis], [calc_method])numberaccrued interest of a periodic-coupon security: ACCRINT(issue, first_interest, settlement, rate, par, frequency, [basis], [calc_method])
ACCRINTM(issue, settlement, rate, [par=1000], [basis])numberaccrued interest paid at maturity: ACCRINTM(issue, settlement, rate, [par=1000], [basis])
COUPDAYBS(settlement, maturity, frequency, [basis])numberdays from the coupon period's start to settlement
COUPDAYS(settlement, maturity, frequency, [basis])numberdays in the coupon period holding settlement
COUPDAYSNC(settlement, maturity, frequency, [basis])numberdays from settlement to the next coupon
COUPNCD(settlement, maturity, frequency, [basis])datethe next coupon date after settlement
COUPNUM(settlement, maturity, frequency, [basis])numbercoupons payable between settlement and maturity
COUPPCD(settlement, maturity, frequency, [basis])datethe coupon date on or before settlement
DISC(settlement, maturity, pr, redemption, [basis])numberdiscount rate: DISC(settlement, maturity, pr, redemption, [basis])
DURATION(settlement, maturity, coupon, yld, frequency, [basis])numberMacaulay duration: DURATION(settlement, maturity, coupon, yld, frequency, [basis]) (also BONDDURATION)
MDURATION(settlement, maturity, coupon, yld, frequency, [basis])numbermodified duration: MDURATION(settlement, maturity, coupon, yld, frequency, [basis]) (also BONDMDURATION)
INTRATE(settlement, maturity, investment, redemption, [basis])numberinterest rate of a fully invested security: INTRATE(settlement, maturity, investment, redemption, [basis])
ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis])numberprice with an odd first period: ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis])
ODDFYIELD(settlement, maturity, issue, first_coupon, rate, pr, redemption, frequency, [basis])numberyield with an odd first period: ODDFYIELD(settlement, maturity, issue, first_coupon, rate, pr, redemption, frequency, [basis])
ODDLPRICE(settlement, maturity, last_interest, rate, yld, redemption, frequency, [basis])numberprice with an odd last period: ODDLPRICE(settlement, maturity, last_interest, rate, yld, redemption, frequency, [basis])
ODDLYIELD(settlement, maturity, last_interest, rate, pr, redemption, frequency, [basis])numberyield with an odd last period: ODDLYIELD(settlement, maturity, last_interest, rate, pr, redemption, frequency, [basis])
PRICE(settlement, maturity, rate, yld, redemption, frequency, [basis])numberprice per 100 face value: PRICE(settlement, maturity, rate, yld, redemption, frequency, [basis])
PRICEDISC(settlement, maturity, discount, redemption, [basis])numberprice of a discounted security: PRICEDISC(settlement, maturity, discount, redemption, [basis])
PRICEMAT(settlement, maturity, issue, rate, yld, [basis])numberprice of a security paying interest at maturity: PRICEMAT(settlement, maturity, issue, rate, yld, [basis])
RECEIVED(settlement, maturity, investment, discount, [basis])numberamount at maturity of a fully invested security: RECEIVED(settlement, maturity, investment, discount, [basis])
TBILLEQ(settlement, maturity, discount)numberbond-equivalent yield of a Treasury bill: TBILLEQ(settlement, maturity, discount)
TBILLPRICE(settlement, maturity, discount)numberprice per 100 face of a Treasury bill: TBILLPRICE(settlement, maturity, discount)
TBILLYIELD(settlement, maturity, pr)numberyield of a Treasury bill: TBILLYIELD(settlement, maturity, pr)
YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis])numberyield of a periodic-coupon security (iterative): YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis])
YIELDDISC(settlement, maturity, pr, redemption, [basis])numberannual yield of a discounted security: YIELDDISC(settlement, maturity, pr, redemption, [basis])
YIELDMAT(settlement, maturity, issue, rate, pr, [basis])numberannual yield of a security paying interest at maturity: YIELDMAT(settlement, maturity, issue, rate, pr, [basis])
NPV(rate, values OVER T)numbernet present value of the flows in item order, the first discounted one period (a missing item is skipped, not zero): NPV(rate, values OVER T)
XNPV(rate, values, dates OVER T)numbernet present value of flows at dates, discounted from the first date (365-day years): XNPV(rate, values, dates OVER T)
IRR(values OVER T, [guess=0.1])numberinternal rate of return of the flows in item order (iterative): IRR(values OVER T, [guess=0.1])
XIRR(values, dates OVER T, [guess=0.1])numberinternal rate of return of flows at dates (iterative): XIRR(values, dates OVER T, [guess=0.1])
MIRR(values OVER T, finance_rate, reinvest_rate)numbermodified internal rate of return, outflows financed and inflows reinvested: MIRR(values OVER T, finance_rate, reinvest_rate)
FMRR(values OVER T, safe_rate, reinvest_rate, reinvest_min)numberfinancial management rate of return (GNU Oleo): outflows pulled back at the safe rate, inflows of at least reinvest_min pushed forward at the reinvestment rate: FMRR(values OVER T, safe_rate, reinvest_rate, reinvest_min)
FVSCHEDULE(principal, schedule OVER T)numberprincipal compounded over the rates in item order: FVSCHEDULE(principal, schedule OVER T)
OPT_BS(call_put, spot, strike, time, rate, volatility, [cost_of_carry])numberBlack-Scholes price of a European option: OPT_BS(call_put, spot, strike, time, rate, volatility, [cost_of_carry])
OPT_BS_DELTA(call_put, spot, strike, time, rate, volatility, [cost_of_carry])numberBlack-Scholes delta: OPT_BS_DELTA(call_put, spot, strike, time, rate, volatility, [cost_of_carry])
OPT_BS_GAMMA(spot, strike, time, rate, volatility, [cost_of_carry])numberBlack-Scholes gamma (calls and puts alike): OPT_BS_GAMMA(spot, strike, time, rate, volatility, [cost_of_carry])
OPT_BS_RHO(call_put, spot, strike, time, rate, volatility, [cost_of_carry])numberBlack-Scholes rho: OPT_BS_RHO(call_put, spot, strike, time, rate, volatility, [cost_of_carry])
OPT_BS_THETA(call_put, spot, strike, time, rate, volatility, [cost_of_carry])numberBlack-Scholes theta: OPT_BS_THETA(call_put, spot, strike, time, rate, volatility, [cost_of_carry])
OPT_BS_VEGA(spot, strike, time, rate, volatility, [cost_of_carry])numberBlack-Scholes vega (calls and puts alike): OPT_BS_VEGA(spot, strike, time, rate, volatility, [cost_of_carry])
OPT_BS_CARRYCOST(call_put, spot, strike, time, rate, volatility, [cost_of_carry])numberBlack-Scholes sensitivity to the cost of carry: OPT_BS_CARRYCOST(call_put, spot, strike, time, rate, volatility, [cost_of_carry])
OPT_GARMAN_KOHLHAGEN(call_put, spot, strike, time, domestic_rate, foreign_rate, volatility)numbercurrency option: OPT_GARMAN_KOHLHAGEN(call_put, spot, strike, time, domestic_rate, foreign_rate, volatility)
OPT_FRENCH(call_put, spot, strike, trading_time, calendar_time, rate, volatility, cost_of_carry)numberBlack-Scholes with trading-day volatility: OPT_FRENCH(call_put, spot, strike, trading_time, calendar_time, rate, volatility, cost_of_carry)
OPT_JUMP_DIFF(call_put, spot, strike, time, rate, volatility, lambda, gamma)numberMerton jump diffusion: OPT_JUMP_DIFF(call_put, spot, strike, time, rate, volatility, lambda, gamma)
OPT_MILTERSEN_SCHWARTZ(call_put, p_t, f_t, strike, t1, t2, v_s, v_e, v_f, rho_se, rho_sf, rho_ef, kappa_e, kappa_f)numbercommodity futures option: OPT_MILTERSEN_SCHWARTZ(call_put, p_t, f_t, strike, t1, t2, v_s, v_e, v_f, rho_se, rho_sf, rho_ef, kappa_e, kappa_f)
OPT_EXEC(call_put, spot, strike, time, rate, volatility, cost_of_carry, lambda)numberexecutive stock option: OPT_EXEC(call_put, spot, strike, time, rate, volatility, cost_of_carry, lambda)
OPT_FORWARD_START(call_put, spot, alpha, time_start, time, rate, volatility, cost_of_carry)numberforward start option: OPT_FORWARD_START(call_put, spot, alpha, time_start, time, rate, volatility, cost_of_carry)
OPT_TIME_SWITCH(call_put, spot, strike, a, time, m, dt, rate, cost_of_carry, volatility)numberdiscrete time switch option: OPT_TIME_SWITCH(call_put, spot, strike, a, time, m, dt, rate, cost_of_carry, volatility)
OPT_SIMPLE_CHOOSER(spot, strike, time1, time2, rate, cost_of_carry, volatility)numbersimple chooser option: OPT_SIMPLE_CHOOSER(spot, strike, time1, time2, rate, cost_of_carry, volatility)
OPT_BAW_AMER(call_put, spot, strike, time, rate, volatility, cost_of_carry)numberBarone-Adesi-Whaley American approximation: OPT_BAW_AMER(call_put, spot, strike, time, rate, volatility, cost_of_carry)
OPT_BJER_STENS(call_put, spot, strike, time, rate, volatility, cost_of_carry)numberBjerksund-Stensland American approximation: OPT_BJER_STENS(call_put, spot, strike, time, rate, volatility, cost_of_carry)
OPT_RGW(spot, strike, time_payout, time_exp, rate, d, volatility)numberRoll-Geske-Whaley American call with one known dividend: OPT_RGW(spot, strike, time_payout, time_exp, rate, d, volatility)
OPT_BINOMIAL(amer_euro, call_put, steps, spot, strike, time, rate, volatility, [cost_of_carry])numberCox-Ross-Rubinstein binomial tree: OPT_BINOMIAL(amer_euro, call_put, steps, spot, strike, time, rate, volatility, [cost_of_carry])
OPT_COMPLEX_CHOOSER(spot, strike_call, strike_put, time, time_call, time_put, rate, cost_of_carry, volatility)numbercomplex chooser option: OPT_COMPLEX_CHOOSER(spot, strike_call, strike_put, time, time_call, time_put, rate, cost_of_carry, volatility)
OPT_ON_OPTIONS(type, spot, strike1, strike2, time1, time2, rate, cost_of_carry, volatility)numberoption on an option ("cc", "cp", "pc", "pp"): OPT_ON_OPTIONS(type, spot, strike1, strike2, time1, time2, rate, cost_of_carry, volatility)
OPT_EXTENDIBLE_WRITER(call_put, spot, strike1, strike2, time1, time2, rate, cost_of_carry, volatility)numberwriter-extendible option: OPT_EXTENDIBLE_WRITER(call_put, spot, strike1, strike2, time1, time2, rate, cost_of_carry, volatility)
OPT_2_ASSET_CORRELATION(call_put, spot1, spot2, strike1, strike2, time, cost_of_carry1, cost_of_carry2, rate, volatility1, volatility2, rho)numbertwo-asset correlation option: OPT_2_ASSET_CORRELATION(call_put, spot1, spot2, strike1, strike2, time, cost_of_carry1, cost_of_carry2, rate, volatility1, volatility2, rho)
OPT_EURO_EXCHANGE(spot1, spot2, qty1, qty2, time, rate, cost_of_carry1, cost_of_carry2, volatility1, volatility2, rho)numberEuropean option to exchange asset 2 for asset 1: OPT_EURO_EXCHANGE(spot1, spot2, qty1, qty2, time, rate, cost_of_carry1, cost_of_carry2, volatility1, volatility2, rho)
OPT_AMER_EXCHANGE(spot1, spot2, qty1, qty2, time, rate, cost_of_carry1, cost_of_carry2, volatility1, volatility2, rho)numberAmerican option to exchange asset 2 for asset 1: OPT_AMER_EXCHANGE(spot1, spot2, qty1, qty2, time, rate, cost_of_carry1, cost_of_carry2, volatility1, volatility2, rho)
OPT_SPREAD_APPROX(call_put, fut_price1, fut_price2, strike, time, rate, volatility1, volatility2, rho)numberKirk's futures spread option approximation: OPT_SPREAD_APPROX(call_put, fut_price1, fut_price2, strike, time, rate, volatility1, volatility2, rho)
OPT_FIXED_STRK_LKBK(call_put, spot, spot_min, spot_max, strike, time, rate, cost_of_carry, volatility)numberfixed-strike lookback: OPT_FIXED_STRK_LKBK(call_put, spot, spot_min, spot_max, strike, time, rate, cost_of_carry, volatility)
OPT_FLOAT_STRK_LKBK(call_put, spot, spot_min, spot_max, time, rate, cost_of_carry, volatility)numberfloating-strike lookback: OPT_FLOAT_STRK_LKBK(call_put, spot, spot_min, spot_max, time, rate, cost_of_carry, volatility)
OPT_BARRIER(spot, vol, r, rf, maturity, strike, lower, upper, rebate, put_call, in_out, continuous_or_end, [greek])numberbarrier option: OPT_BARRIER(spot, vol, r, rf, maturity, strike, lower, upper, rebate, put_call, in_out, continuous_or_end, [greek])
OPT_TOUCH(spot, vol, r, rf, maturity, lower, upper, foreign_domestic, in_out, continuous_or_end, [greek])numberone/no-touch option: OPT_TOUCH(spot, vol, r, rf, maturity, lower, upper, foreign_domestic, in_out, continuous_or_end, [greek])
OPT_PROB_HIT(spot, vol, mu, maturity, lower, upper)numberprobability of touching a barrier: OPT_PROB_HIT(spot, vol, mu, maturity, lower, upper)
OPT_PROB_INMONEY(spot, vol, mu, maturity, lower, upper, [strike], [put_call])numberprobability of ending between the barriers (and in the money): OPT_PROB_INMONEY(spot, vol, mu, maturity, lower, upper, [strike], [put_call])

Engineering

Complex numbers are text, "3+4i" (suffix i or j); base conversions use 10-digit two's complement for negatives.

FunctionReturnsDescription
BIN2DEC(number)numberbinary text as a number
BIN2HEX(number, [places])textbinary text as hexadecimal, zero-padded to places
BIN2OCT(number, [places])textbinary text as octal, zero-padded to places
DEC2BIN(number, [places])textan integer in −512…511 as binary text
DEC2HEX(number, [places])textan integer in −2³⁹…2³⁹−1 as hexadecimal text
DEC2OCT(number, [places])textan integer in −2²⁹…2²⁹−1 as octal text
HEX2BIN(number, [places])texthexadecimal text as binary
HEX2DEC(number)numberhexadecimal text as a number
HEX2OCT(number, [places])texthexadecimal text as octal
OCT2BIN(number, [places])textoctal text as binary
OCT2DEC(number)numberoctal text as a number
OCT2HEX(number, [places])textoctal text as hexadecimal
BASE(number, radix, [min_length])textan integer in 0…2⁵³−1 as text in a radix 2…36, zero-padded to min_length (also NUMTOBASE)
DECIMAL(text, radix)numbertext in a radix 2…36 as a number (also BASETONUM)
HEXREP(x)textthe bytes of a number's IEEE double, little-endian, in hexadecimal
BITAND(number1, number2)numberbitwise and
BITOR(number1, number2)numberbitwise or
BITXOR(number1, number2)numberbitwise exclusive or
BITLSHIFT(number, shift_amount)numbershifted left by shift_amount bits (right if negative), at most 53 either way
BITRSHIFT(number, shift_amount)numbershifted right by shift_amount bits (left if negative), at most 53 either way
CONVERT(number, from_unit, to_unit)numbera measurement converted between units of Excel's table (SI and binary prefixes allowed); #N/A for unknown or mismatched units
DELTA(number1, [number2=0])number1 if the numbers are equal (number2 defaults to 0), else 0
GESTEP(number, [step=0])number1 if number ≥ step (default 0), else 0
COMPLEX(real_num, i_num, [suffix="i"])textthe complex number re + im·i as text, with suffix "i" (default) or "j"
IMREAL(inumber)numbera complex number's real part
IMAGINARY(inumber)numbera complex number's imaginary part
IMABS(inumber)numbera complex number's modulus
IMARGUMENT(inumber)numbera complex number's angle in radians, −π…π (#NUM! at 0)
IMCONJUGATE(inumber)textthe complex conjugate
IMNEG(inumber)text−z
IMINV(inumber)text1/z
IMSUM(inumber1, …)textthe sum of complex numbers
IMPRODUCT(inumber1, …)textthe product of complex numbers
IMSUB(inumber1, inumber2)textz1 − z2
IMDIV(inumber1, inumber2)textz1 / z2
IMPOWER(inumber, number)textz raised to a real power
IMSQRT(inumber)textthe principal square root
IMEXP(inumber)texte^z
IMLN(inumber)textthe principal natural logarithm
IMLOG10(inumber)textthe principal base-10 logarithm
IMLOG2(inumber)textthe principal base-2 logarithm
IMSIN(inumber)textthe complex sine
IMCOS(inumber)textthe complex cosine
IMTAN(inumber)textthe complex tangent
IMSEC(inumber)textthe complex secant
IMCSC(inumber)textthe complex cosecant
IMCOT(inumber)textthe complex cotangent
IMSINH(inumber)textthe complex hyperbolic sine
IMCOSH(inumber)textthe complex hyperbolic cosine
IMTANH(inumber)textthe complex hyperbolic tangent
IMSECH(inumber)textthe complex hyperbolic secant
IMCSCH(inumber)textthe complex hyperbolic cosecant
IMCOTH(inumber)textthe complex hyperbolic cotangent
IMARCSIN(inumber)textthe complex arcsine (principal branch)
IMARCCOS(inumber)textthe complex arccosine
IMARCTAN(inumber)textthe complex arctangent
IMARCSEC(inumber)textthe complex arcsecant
IMARCCSC(inumber)textthe complex arccosecant
IMARCCOT(inumber)textthe complex arccotangent
IMARCSINH(inumber)textthe complex inverse hyperbolic sine
IMARCCOSH(inumber)textthe complex inverse hyperbolic cosine
IMARCTANH(inumber)textthe complex inverse hyperbolic tangent
IMARCSECH(inumber)textthe complex inverse hyperbolic secant
IMARCCSCH(inumber)textthe complex inverse hyperbolic cosecant
IMARCCOTH(inumber)textthe complex inverse hyperbolic cotangent
IMFACT(inumber)textthe complex factorial z! = Γ(z + 1)
IMGAMMA(inumber)textthe complex gamma function Γ(z)
BESSELI(x, n)numberthe modified Bessel function Iₙ(x)
BESSELJ(x, n)numberthe Bessel function Jₙ(x)
BESSELK(x, n)numberthe modified Bessel function Kₙ(x), x > 0
BESSELY(x, n)numberthe Bessel function Yₙ(x), x > 0
IMIGAMMA(a, inumber, [lower=TRUE], [regularize=TRUE])textthe complex incomplete gamma function of a and z: lower (default) or upper, regularized (default) or not