ABS
ABS(number)
Returns the absolute value of a number.
=ABS(-5) → 5
A formula begins with an equals sign, for example =SUM(A1:A9)/2. Formulas combine values, cell references and functions using the usual operators:
+ - * / ^ (power) and % (percent, written after a value)= <> < > <= >=, which yield TRUE or FALSE& joins two pieces of text, e.g. =A1&" "&B1Cells are addressed in A1 style. Refer to a single cell as B2, a rectangular range as A1:C10, a whole column as A:A or a whole row as 3:3. A range on another sheet is written Sheet2!A1:A9. Two ranges separated by a space give their intersection, and by a comma their union. You can also type a constant array inline, e.g. =SUM({1,2,3}).
Function arguments are separated by commas (or your locale's list separator). In the reference below, arguments shown in [brackets] are optional. When something goes wrong a formula yields an error value such as #DIV/0!, #VALUE!, #NUM!, #N/A or #REF!.
CellBasics targets compatibility with Excel for the web (Microsoft 365) — the same shared calculation engine used by desktop Excel. For the functions below, results are intended to match Excel exactly. Where a function still differs from Excel for the web in a meaningful way, that difference is called out with a Note on the function.
XLOOKUP, FILTER and MODE.MULT; CellBasics instead returns a single value. This is a known difference from Excel for the web and is noted on the functions it affects.LEFTB, MIDB, RIGHTB, LENB) currently count characters, exactly like their non-B counterparts.INDEX is registered but not yet implemented. A couple of Excel functions (CELL, VALUETOTEXT) are not available yet and are omitted from the list below.368 functions are implemented, grouped by category. Type in the box to filter by name or description.
ABS(number)
Returns the absolute value of a number.
=ABS(-5) → 5
ACOS(number)
Returns the arccosine (in radians) of a number between -1 and 1.
=ACOS(1) → 0
ACOSH(number)
Returns the inverse hyperbolic cosine of a number (number must be >= 1).
=ACOSH(1) → 0
ACOT(number)
Returns the arccotangent (in radians) of a number.
=ACOT(1) → 0.785398
AGGREGATE(function_num, options, number1, [number2], ...)
Applies an aggregation (sum, average, min, max, etc.) selected by function_num over the supplied values.
=AGGREGATE(9, 0, 10, 20, 30) → 60
Note: only function_num 1-13 work; LARGE/SMALL/PERCENTILE/QUARTILE (14-19) return an error because no k argument is accepted, the hidden-row options have no effect, and both COUNT and COUNTA count only numeric values.
ARABIC(text)
Converts a Roman numeral string to its Arabic (decimal) number.
=ARABIC("LVII") → 57
ASIN(number)
Returns the arcsine (in radians) of a number between -1 and 1.
=ASIN(1) → 1.570796
ASINH(number)
Returns the inverse hyperbolic sine of a number.
=ASINH(0) → 0
ATAN(number)
Returns the arctangent (in radians) of a number.
=ATAN(1) → 0.785398
ATAN2(x_num, y_num)
Returns the arctangent (in radians) of the point given by the x and y coordinates.
=ATAN2(1, 1) → 0.785398
ATANH(number)
Returns the inverse hyperbolic tangent of a number strictly between -1 and 1.
=ATANH(0) → 0
BASE(number, radix, [min_length])
Converts a non-negative number to a text representation in the given radix (2-36), optionally zero-padded to min_length.
=BASE(12, 2) → 1100
CEILING(number, significance)
Rounds a number up to the nearest multiple of significance.
=CEILING(4.3, 2) → 6
Note: unlike Excel for the web (which returns #NUM! when number and significance have opposite signs), significance is treated as its absolute value and negative numbers round toward zero (e.g. CEILING(-7.9, 2) → -6) rather than away from zero.
CEILING.MATH(number, [significance], [mode])
Rounds a number up to the nearest multiple of significance; for negatives, a nonzero mode rounds away from zero.
=CEILING.MATH(24.3, 5) → 25
CEILING.PRECISE(number, [significance])
Rounds a number up (toward positive infinity) to the nearest multiple of the absolute significance.
=CEILING.PRECISE(4.3, 2) → 6
COMBIN(number, number_chosen)
Returns the number of combinations (without repetition) of number_chosen items from number items.
=COMBIN(8, 2) → 28
COMBINA(number, number_chosen)
Returns the number of combinations with repetition of number_chosen items from number items.
=COMBINA(4, 3) → 20
COS(number)
Returns the cosine of an angle given in radians.
=COS(0) → 1
COSH(number)
Returns the hyperbolic cosine of a number.
=COSH(0) → 1
COT(number)
Returns the cotangent of an angle given in radians.
=COT(1) → 0.642093
COTH(number)
Returns the hyperbolic cotangent of a number.
=COTH(1) → 1.313035
CSCH(number)
Returns the hyperbolic cosecant of a number.
=CSCH(1) → 0.850918
DECIMAL(text, radix)
Converts a text representation of a number in the given radix (2-36) to a decimal number.
=DECIMAL("FF", 16) → 255
DEGREES(angle)
Converts an angle from radians to degrees.
=DEGREES(PI()) → 180
EVEN(number)
Rounds a number away from zero to the nearest even integer.
=EVEN(1.5) → 2
EXP(number)
Returns e raised to the power of the given number.
=EXP(1) → 2.718282
FACT(number)
Returns the factorial of a non-negative number (truncated toward zero).
=FACT(5) → 120
FACTDOUBLE(number)
Returns the double factorial (n!!) of a non-negative number.
=FACTDOUBLE(7) → 105
FLOOR(number, significance)
Rounds a number down to the nearest multiple of significance.
=FLOOR(7.9, 2) → 6
Note: unlike Excel for the web (which returns #NUM! when number and significance have opposite signs), significance is treated as its absolute value and negative numbers round away from zero (e.g. FLOOR(-7.9, 2) → -8) rather than toward zero.
FLOOR.MATH(number, [significance], [mode])
Rounds a number down to the nearest multiple of significance; for negatives, a nonzero mode rounds toward zero.
=FLOOR.MATH(24.3, 5) → 20
FLOOR.PRECISE(number, [significance])
Rounds a number down (toward negative infinity) to the nearest multiple of the absolute significance.
=FLOOR.PRECISE(4.3, 2) → 4
GCD(number1, [number2], ...)
Returns the greatest common divisor of the supplied non-negative integers.
=GCD(24, 36) → 12
INT(number)
Rounds a number down to the nearest integer (toward negative infinity).
=INT(-8.9) → -9
LCM(number1, [number2], ...)
Returns the least common multiple of the supplied non-negative integers.
=LCM(24, 36) → 72
LN(number)
Returns the natural (base-e) logarithm of a positive number.
=LN(1) → 0
LOG(number, [base])
Returns the logarithm of a positive number to the given base (default 10).
=LOG(8, 2) → 3
LOG10(number)
Returns the base-10 logarithm of a positive number.
=LOG10(1000) → 3
MAX(number1, [number2], ...)
Returns the largest of the supplied values.
=MAX(3, 7, 2) → 7
MIN(number1, [number2], ...)
Returns the smallest of the supplied values.
=MIN(3, 7, 2) → 2
MOD(number, divisor)
Returns the remainder after dividing number by divisor, with the sign of the divisor.
=MOD(10, 3) → 1
MROUND(number, multiple)
Rounds a number to the nearest multiple of the given value (ties away from zero).
=MROUND(10, 3) → 9
MULTINOMIAL(number1, [number2], ...)
Returns the ratio of the factorial of the sum of the values to the product of their factorials.
=MULTINOMIAL(2, 3, 4) → 1260
ODD(number)
Rounds a number away from zero to the nearest odd integer.
=ODD(1.5) → 3
PI()
Returns the value of pi.
=PI() → 3.141593
POWER(number, power)
Returns a number raised to the given power.
=POWER(5, 2) → 25
PRODUCT(number1, [number2], ...)
Multiplies all the supplied values together.
=PRODUCT(2, 3, 4) → 24
Note: if no numeric values are supplied the result is 0.
RADIANS(angle)
Converts an angle from degrees to radians.
=RADIANS(180) → 3.141593
ROMAN(number, [form])
Converts a number (0-3999) to a Roman numeral string, optionally in a more concise form (0-4).
=ROMAN(499) → CDXCIX
ROUND(number, num_digits)
Rounds a number to the specified number of digits (ties away from zero).
=ROUND(2.567, 1) → 2.6
ROUNDUP(number, num_digits)
Rounds a number away from zero to the specified number of digits.
=ROUNDUP(2.1, 0) → 3
ROUNDDOWN(number, num_digits)
Rounds a number toward zero to the specified number of digits.
=ROUNDDOWN(2.9, 0) → 2
SUM(number1, [number2], ...)
Adds all the supplied values together.
=SUM(2, 3, 4) → 9
QUOTIENT(numerator, denominator)
Returns the integer portion of a division, truncated toward zero.
=QUOTIENT(5, 2) → 2
RAND()
Returns a random number greater than or equal to 0 and less than 1.
=RAND() → 0.512703
RANDBETWEEN(bottom, top)
Returns a random integer between bottom and top, inclusive.
=RANDBETWEEN(1, 6) → 4
SEC(number)
Returns the secant of an angle given in radians.
=SEC(0) → 1
SECH(number)
Returns the hyperbolic secant of a number.
=SECH(0) → 1
SERIESSUM(x, n, m, coefficient1, [coefficient2], ...)
Returns the sum of a power series, where each coefficient multiplies x raised to n + i*m.
=SERIESSUM(2, 0, 1, 1, 1, 1) → 7
SIGN(number)
Returns -1, 0, or 1 depending on whether the number is negative, zero, or positive.
=SIGN(-8) → -1
SIN(number)
Returns the sine of an angle given in radians.
=SIN(0) → 0
SINH(number)
Returns the hyperbolic sine of a number.
=SINH(0) → 0
SQRT(number)
Returns the square root of a non-negative number.
=SQRT(16) → 4
SQRTPI(number)
Returns the square root of a non-negative number multiplied by pi.
=SQRTPI(1) → 1.772454
SUMSQ(number1, [number2], ...)
Returns the sum of the squares of the supplied values.
=SUMSQ(3, 4) → 25
TAN(number)
Returns the tangent of an angle given in radians.
=TAN(0) → 0
TANH(number)
Returns the hyperbolic tangent of a number.
=TANH(0) → 0
TRUNC(number, [num_digits])
Truncates a number toward zero to the specified number of digits (default 0).
=TRUNC(8.9) → 8
AVERAGE(number1, [number2], ...)
Returns the arithmetic mean of the supplied values.
=AVERAGE(2, 4, 6) → 4
AVEDEV(number1, [number2], ...)
Returns the average of the absolute deviations of the data points from their mean.
=AVEDEV(A1:A9) → 1.02
BETA.DIST(x, alpha, beta, cumulative, [A], [B])
Returns the beta distribution's cumulative probability or density at x, optionally scaled to the interval [A, B].
=BETA.DIST(2, 8, 10, TRUE, 1, 3) → 0.6854
BETA.INV(probability, alpha, beta, [A], [B])
Returns the inverse of the beta cumulative distribution: the x for which BETA.DIST equals the given probability.
=BETA.INV(0.6854, 8, 10, 1, 3) → 2
BINOM.DIST(number_s, trials, probability_s, cumulative)
Returns the individual-term or cumulative binomial probability of number_s successes in trials.
=BINOM.DIST(6, 10, 0.5, FALSE) → 0.2051
BINOM.DIST.RANGE(trials, probability_s, number_s, [number_s2])
Returns the probability of between number_s and number_s2 successes in trials (defaults to exactly number_s).
=BINOM.DIST.RANGE(10, 0.5, 4, 6) → 0.6563
BINOM.INV(trials, probability_s, alpha)
Returns the smallest number of successes for which the cumulative binomial probability is at least alpha.
=BINOM.INV(10, 0.5, 0.75) → 6
CHISQ.DIST(x, deg_freedom, cumulative)
Returns the left-tailed cumulative probability or density of the chi-squared distribution at x.
=CHISQ.DIST(3, 4, TRUE) → 0.4422
CHISQ.DIST.RT(x, deg_freedom)
Returns the right-tailed probability of the chi-squared distribution at x.
=CHISQ.DIST.RT(3, 4) → 0.5578
CHISQ.INV(probability, deg_freedom)
Returns the inverse of the left-tailed chi-squared cumulative distribution.
=CHISQ.INV(0.4422, 4) → 3
CHISQ.INV.RT(probability, deg_freedom)
Returns the inverse of the right-tailed chi-squared probability.
=CHISQ.INV.RT(0.5578, 4) → 3
CHISQ.TEST(actual_range, expected_range)
Returns the chi-squared test p-value comparing observed and expected values, using n−1 degrees of freedom.
=CHISQ.TEST(A1:A4, B1:B4) → 0.0472
Note: degrees of freedom are always n−1 (one-way test); it does not compute the (rows−1)×(cols−1) value of a two-way contingency table.
CONFIDENCE.NORM(alpha, standard_dev, size)
Returns the half-width of the confidence interval for a population mean using the normal distribution.
=CONFIDENCE.NORM(0.05, 2.5, 50) → 0.6929
CONFIDENCE.T(alpha, standard_dev, size)
Returns the half-width of the confidence interval for a population mean using the Student's t distribution.
=CONFIDENCE.T(0.05, 2.5, 50) → 0.7105
CORREL(array1, array2)
Returns the Pearson correlation coefficient between two equal-length data sets.
=CORREL(A1:A9, B1:B9) → 0.8712
COVARIANCE.P(array1, array2)
Returns the population covariance (average of paired deviation products) of two data sets.
=COVARIANCE.P(A1:A9, B1:B9) → 5.2
COVARIANCE.S(array1, array2)
Returns the sample covariance of two data sets (divided by n−1).
=COVARIANCE.S(A1:A9, B1:B9) → 5.85
DEVSQ(number1, [number2], ...)
Returns the sum of the squared deviations of the data points from their mean.
=DEVSQ(A1:A9) → 48.5
EXPON.DIST(x, lambda, cumulative)
Returns the exponential distribution's cumulative probability or density at x for rate lambda.
=EXPON.DIST(0.2, 10, TRUE) → 0.8647
F.DIST(x, deg_freedom1, deg_freedom2, cumulative)
Returns the left-tailed cumulative probability or density of the F distribution at x.
=F.DIST(2, 5, 10, TRUE) → 0.8386
F.DIST.RT(x, deg_freedom1, deg_freedom2)
Returns the right-tailed probability of the F distribution at x.
=F.DIST.RT(2, 5, 10) → 0.1614
F.INV(probability, deg_freedom1, deg_freedom2)
Returns the inverse of the left-tailed F cumulative distribution.
=F.INV(0.8386, 5, 10) → 2
F.INV.RT(probability, deg_freedom1, deg_freedom2)
Returns the inverse of the right-tailed F probability.
=F.INV.RT(0.1614, 5, 10) → 2
F.TEST(array1, array2)
Returns the two-tailed p-value of an F-test for whether two samples have equal variances.
=F.TEST(A1:A9, B1:B9) → 0.6544
FISHER(x)
Returns the Fisher transformation of x, atanh(x), for −1 < x < 1.
=FISHER(0.75) → 0.9730
FISHERINV(y)
Returns the inverse Fisher transformation, tanh(y).
=FISHERINV(0.9730) → 0.75
GAMMA(x)
Returns the gamma function value Γ(x); undefined for zero and negative integers.
=GAMMA(5) → 24
GAMMA.DIST(x, alpha, beta, cumulative)
Returns the gamma distribution's cumulative probability or density at x for shape alpha and scale beta.
=GAMMA.DIST(10, 9, 2, FALSE) → 0.0328
GAMMA.INV(probability, alpha, beta)
Returns the inverse of the gamma cumulative distribution.
=GAMMA.INV(0.068, 9, 2) → 10.8956
GAMMALN(x)
Returns the natural logarithm of the gamma function, ln(Γ(x)), for x > 0.
=GAMMALN(5) → 3.1781
GAMMALN.PRECISE(x)
Returns the natural logarithm of the gamma function, ln(Γ(x)), for x > 0.
=GAMMALN.PRECISE(5) → 3.1781
GAUSS(z)
Returns the probability that a standard normal variable falls between 0 and z, i.e. Φ(z)−0.5.
=GAUSS(2) → 0.4772
GEOMEAN(number1, [number2], ...)
Returns the geometric mean of a set of positive numbers.
=GEOMEAN(A1:A9) → 4.21
HARMEAN(number1, [number2], ...)
Returns the harmonic mean of a set of positive numbers.
=HARMEAN(A1:A9) → 3.86
HYPGEOM.DIST(sample_s, number_sample, population_s, number_pop, cumulative)
Returns the hypergeometric probability of sample_s successes when drawing number_sample items without replacement.
=HYPGEOM.DIST(1, 4, 8, 20, FALSE) → 0.3633
KURT(number1, [number2], ...)
Returns the sample excess kurtosis of a data set (requires at least 4 points).
=KURT(A1:A9) → -0.152
LARGE(array, k)
Returns the k-th largest value in a data set.
=LARGE(A1:A9, 2) → 8
LOGNORM.DIST(x, mean, standard_dev, cumulative)
Returns the lognormal distribution's cumulative probability or density at x.
=LOGNORM.DIST(4, 3.5, 1.2, TRUE) → 0.0390
LOGNORM.INV(probability, mean, standard_dev)
Returns the inverse of the lognormal cumulative distribution.
=LOGNORM.INV(0.039, 3.5, 1.2) → 4
MEDIAN(number1, [number2], ...)
Returns the median (middle value) of a set of numbers.
=MEDIAN(A1:A9) → 5
MODE.SNGL(number1, [number2], ...)
Returns the most frequently occurring value in a data set (the smallest when several tie).
=MODE.SNGL(A1:A9) → 4
Note: when no value repeats it returns a #NUM! error rather than Excel's #N/A.
MODE.MULT(number1, [number2], ...)
Returns the most frequently occurring value in a data set.
=MODE.MULT(A1:A9) → 4
Note: returns only the single most frequent value; in Excel for the web MODE.MULT is a dynamic-array function that spills a vertical array of every tied mode.
NEGBINOM.DIST(number_f, number_s, probability_s, cumulative)
Returns the negative binomial probability of number_f failures before number_s successes.
=NEGBINOM.DIST(10, 5, 0.25, FALSE) → 0.0550
NORM.DIST(x, mean, standard_dev, cumulative)
Returns the normal distribution's cumulative probability or density at x.
=NORM.DIST(42, 40, 1.5, TRUE) → 0.9088
NORM.INV(probability, mean, standard_dev)
Returns the inverse of the normal cumulative distribution.
=NORM.INV(0.9088, 40, 1.5) → 42
NORM.S.DIST(z, cumulative)
Returns the standard normal cumulative probability or density at z.
=NORM.S.DIST(1.333, TRUE) → 0.9088
NORM.S.INV(probability)
Returns the inverse of the standard normal cumulative distribution.
=NORM.S.INV(0.9088) → 1.333
PEARSON(array1, array2)
Returns the Pearson product-moment correlation coefficient between two data sets.
=PEARSON(A1:A9, B1:B9) → 0.8712
PERCENTILE.INC(array, k)
Returns the k-th percentile of a data set, with k inclusive in the range 0 to 1.
=PERCENTILE.INC(A1:A9, 0.25) → 3
PERCENTILE.EXC(array, k)
Returns the k-th percentile of a data set, with k exclusive in the range 0 to 1.
=PERCENTILE.EXC(A1:A9, 0.25) → 2.5
PERCENTRANK.INC(array, x, [significance])
Returns the relative rank of x within a data set as a percentage on the inclusive 0 to 1 scale.
=PERCENTRANK.INC(A1:A9, 5) → 0.5
Note: returns a #NUM! error when x lies outside the range of the data; Excel for the web returns #N/A.
PERCENTRANK.EXC(array, x, [significance])
Returns the relative rank of x within a data set as a percentage on the exclusive scale.
=PERCENTRANK.EXC(A1:A9, 5) → 0.5
Note: returns a #NUM! error when x lies outside the range of the data; Excel for the web returns #N/A.
PERMUT(number, number_chosen)
Returns the number of ordered permutations of number_chosen items from a set of number items.
=PERMUT(10, 3) → 720
PERMUTATIONA(number, number_chosen)
Returns the number of permutations of number_chosen items from number items allowing repetition (number^number_chosen).
=PERMUTATIONA(10, 3) → 1000
PHI(x)
Returns the value of the standard normal density function φ(x).
=PHI(0) → 0.3989
POISSON.DIST(x, mean, cumulative)
Returns the Poisson distribution's cumulative probability or individual mass at x for the given mean.
=POISSON.DIST(2, 5, FALSE) → 0.0842
QUARTILE.INC(array, quart)
Returns the requested quartile (0-4) of a data set using the inclusive percentile method.
=QUARTILE.INC(A1:A9, 1) → 3
QUARTILE.EXC(array, quart)
Returns the requested quartile (1-3) of a data set using the exclusive percentile method.
=QUARTILE.EXC(A1:A9, 1) → 2.5
RANK.EQ(number, ref, [order])
Returns the rank of number within ref, giving tied values the same (highest) rank; order 0 ranks descending.
=RANK.EQ(8, A1:A9) → 2
Note: returns a #NUM! error when number is not found in ref; Excel for the web returns #N/A.
RANK.AVG(number, ref, [order])
Returns the rank of number within ref, averaging the ranks of tied values; order 0 ranks descending.
=RANK.AVG(8, A1:A9) → 2.5
Note: returns a #NUM! error when number is not found in ref; Excel for the web returns #N/A.
SKEW(number1, [number2], ...)
Returns the sample skewness of a distribution (requires at least 3 points).
=SKEW(A1:A9) → 0.318
SKEW.P(number1, [number2], ...)
Returns the population skewness of a distribution (requires at least 3 points).
=SKEW.P(A1:A9) → 0.265
SMALL(array, k)
Returns the k-th smallest value in a data set.
=SMALL(A1:A9, 2) → 2
STANDARDIZE(x, mean, standard_dev)
Returns a normalized (z-score) value of x for a distribution with the given mean and standard deviation.
=STANDARDIZE(42, 40, 1.5) → 1.333
VAR.S(number1, [number2], ...)
Returns the sample variance of a data set (divided by n−1).
=VAR.S(A1:A9) → 6.06
VAR.P(number1, [number2], ...)
Returns the population variance of a data set (divided by n).
=VAR.P(A1:A9) → 5.39
VARA(value1, [value2], ...)
Returns the sample variance of a data set, including logical values as 1 or 0.
=VARA(A1:A9) → 6.06
Note: identical to VAR.S; text values are not counted as 0 the way Excel's VARA does.
VARPA(value1, [value2], ...)
Returns the population variance of a data set, including logical values as 1 or 0.
=VARPA(A1:A9) → 5.39
Note: identical to VAR.P; text values are not counted as 0 the way Excel's VARPA does.
STDEV.S(number1, [number2], ...)
Returns the sample standard deviation of a data set (based on n−1).
=STDEV.S(A1:A9) → 2.46
STDEV.P(number1, [number2], ...)
Returns the population standard deviation of a data set (based on n).
=STDEV.P(A1:A9) → 2.32
STDEVA(value1, [value2], ...)
Returns the sample standard deviation of a data set, including logical values as 1 or 0.
=STDEVA(A1:A9) → 2.46
Note: identical to STDEV.S; text values are not counted as 0 the way Excel's STDEVA does.
STDEVPA(value1, [value2], ...)
Returns the population standard deviation of a data set, including logical values as 1 or 0.
=STDEVPA(A1:A9) → 2.32
Note: identical to STDEV.P; text values are not counted as 0 the way Excel's STDEVPA does.
T.DIST(x, deg_freedom, cumulative)
Returns the left-tailed cumulative probability or density of the Student's t distribution at x.
=T.DIST(2, 10, TRUE) → 0.9633
T.DIST.RT(x, deg_freedom)
Returns the right-tailed probability of the Student's t distribution at x.
=T.DIST.RT(2, 10) → 0.0367
T.DIST.2T(x, deg_freedom)
Returns the two-tailed probability of the Student's t distribution for x ≥ 0.
=T.DIST.2T(2, 10) → 0.0734
T.INV(probability, deg_freedom)
Returns the left-tailed inverse of the Student's t cumulative distribution.
=T.INV(0.9633, 10) → 2
T.INV.2T(probability, deg_freedom)
Returns the two-tailed inverse of the Student's t distribution as a positive value.
=T.INV.2T(0.0734, 10) → 2
TRIMMEAN(array, percent)
Returns the mean of a data set after excluding the top and bottom percent/2 of values.
=TRIMMEAN(A1:A20, 0.2) → 5.4
WEIBULL.DIST(x, alpha, beta, cumulative)
Returns the Weibull distribution's cumulative probability or density at x for shape alpha and scale beta.
=WEIBULL.DIST(105, 20, 100, TRUE) → 0.9296
Z.TEST(array, x, [sigma])
Returns the one-tailed p-value of a z-test for the hypothesized population mean x (uses the sample standard deviation when sigma is omitted).
=Z.TEST(A1:A9, 4) → 0.0912
SLOPE(known_ys, known_xs)
Returns the slope of the linear regression line through the given data points.
=SLOPE(B1:B9, A1:A9) → 1.85
INTERCEPT(known_ys, known_xs)
Returns the y-intercept of the linear regression line through the given data points.
=INTERCEPT(B1:B9, A1:A9) → 0.52
RSQ(known_ys, known_xs)
Returns the square of the Pearson correlation coefficient (coefficient of determination) for the data.
=RSQ(B1:B9, A1:A9) → 0.759
STEYX(known_ys, known_xs)
Returns the standard error of the predicted y-value for each x in a linear regression.
=STEYX(B1:B9, A1:A9) → 1.29
FORECAST(x, known_ys, known_xs)
Returns a predicted y-value at x using linear regression on the known data points.
=FORECAST(10, B1:B9, A1:A9) → 19.02
FORECAST.LINEAR(x, known_ys, known_xs)
Returns a predicted y-value at x using linear regression on the known data points.
=FORECAST.LINEAR(10, B1:B9, A1:A9) → 19.02
T.TEST(array1, array2, tails, type)
Returns the p-value of a Student's t-test (type 1 paired, 2 equal-variance, 3 unequal-variance) with 1 or 2 tails.
=T.TEST(A1:A9, B1:B9, 2, 3) → 0.196
PROB(x_range, prob_range, lower_limit, [upper_limit])
Returns the probability that values lie between lower_limit and upper_limit, given a discrete probability distribution.
=PROB(A1:A4, B1:B4, 2, 3) → 0.55
COUNT(value1, [value2], ...)
Returns the count of cells that contain numbers.
=COUNT(A1:A9) → 9
COUNTA(value1, [value2], ...)
Returns the count of cells that are not empty.
=COUNTA(A1:A9) → 9
COUNTBLANK(range)
Returns the count of empty cells in a range.
=COUNTBLANK(A1:A9) → 2
MAXA(value1, [value2], ...)
Returns the largest value in a data set, treating logical values as 1 or 0.
=MAXA(A1:A9) → 9
MINA(value1, [value2], ...)
Returns the smallest value in a data set, treating logical values as 1 or 0.
=MINA(A1:A9) → 1
ACCRINT(issue, first_interest, settlement, rate, par, frequency, [basis], [calc_method])
Returns the accrued interest for a security that pays periodic interest.
=ACCRINT(DATE(2025,1,1), DATE(2025,7,1), DATE(2025,4,1), 0.05, 1000, 2, 0) → 12.5
Note: the optional calc_method argument defaults to FALSE (accrue only from the last coupon date before settlement), whereas Excel for the web defaults it to TRUE (accrue from issue); results differ when settlement is past the first_interest date and calc_method is omitted.
ACCRINTM(issue, settlement, rate, par, [basis])
Returns the accrued interest for a security that pays interest only at maturity.
=ACCRINTM(DATE(2025,1,1), DATE(2025,7,1), 0.05, 1000, 0) → 25
AMORDEGRC(cost, date_purchased, first_period, salvage, period, rate, [basis])
Returns the depreciation for an accounting period using the French declining-balance method with an age-based coefficient.
=AMORDEGRC(2400, DATE(2025,1,1), DATE(2025,12,31), 300, 1, 0.15, 1) → 504.59
Note: the depreciation-rate coefficient is derived from the asset life floor(1/rate), which must be >= 3 or a #NUM! error is returned; the result is not rounded to whole currency units as Excel does.
AMORLINC(cost, date_purchased, first_period, salvage, period, rate, [basis])
Returns the depreciation for an accounting period using the French straight-line method, prorating the first period.
=AMORLINC(2400, DATE(2025,1,1), DATE(2025,12,31), 300, 1, 0.15, 1) → 360
COUPDAYBS(settlement, maturity, frequency, [basis])
Returns the number of days from the beginning of the coupon period to the settlement date.
=COUPDAYBS(DATE(2025,4,1), DATE(2027,1,1), 2, 0) → 90
COUPDAYS(settlement, maturity, frequency, [basis])
Returns the number of days in the coupon period that contains the settlement date.
=COUPDAYS(DATE(2025,4,1), DATE(2027,1,1), 2, 0) → 180
COUPDAYSNC(settlement, maturity, frequency, [basis])
Returns the number of days from the settlement date to the next coupon date.
=COUPDAYSNC(DATE(2025,4,1), DATE(2027,1,1), 2, 0) → 90
COUPNCD(settlement, maturity, frequency, [basis])
Returns the next coupon date after the settlement date.
=COUPNCD(DATE(2025,4,1), DATE(2027,1,1), 2) → 2025-07-01
Note: a [basis] argument is accepted but ignored; the next-coupon date is computed from the coupon schedule only.
COUPNUM(settlement, maturity, frequency, [basis])
Returns the number of coupons payable between the settlement date and the maturity date.
=COUPNUM(DATE(2025,4,1), DATE(2027,1,1), 2) → 4
Note: a [basis] argument is accepted but ignored; the count depends only on frequency and dates.
COUPPCD(settlement, maturity, frequency, [basis])
Returns the previous coupon date on or before the settlement date.
=COUPPCD(DATE(2025,4,1), DATE(2027,1,1), 2) → 2025-01-01
Note: a [basis] argument is accepted but ignored; the previous-coupon date is computed from the coupon schedule only.
CUMIPMT(rate, nper, pv, start_period, end_period, type)
Returns the cumulative interest paid on a loan between two payment periods.
=CUMIPMT(0.05/12, 60, 20000, 1, 12, 0) → -909.03
CUMPRINC(rate, nper, pv, start_period, end_period, type)
Returns the cumulative principal repaid on a loan between two payment periods.
=CUMPRINC(0.05/12, 60, 20000, 1, 12, 0) → -3620.01
DB(cost, salvage, life, period, [month])
Returns the depreciation of an asset for a period using the fixed-declining-balance method.
=DB(1000000, 100000, 6, 1, 7) → 186083.33
DDB(cost, salvage, life, period, [factor])
Returns the depreciation of an asset for a period using the double-declining-balance method (default factor 2), switching to straight-line when advantageous.
=DDB(2400, 300, 10, 1, 2) → 480
Note: this switches to straight-line depreciation once that yields a larger amount than declining balance; Excel for the web's DDB never switches (it stays on pure declining balance), so later-period results can differ. Use VDB for a switching calculation.
DISC(settlement, maturity, pr, redemption, [basis])
Returns the discount rate for a security.
=DISC(DATE(2025,1,1), DATE(2026,1,1), 97.5, 100, 0) → 0.025
DOLLARDE(fractional_dollar, fraction)
Converts a price expressed as an integer part plus a fraction into a decimal number.
=DOLLARDE(1.02, 16) → 1.125
DOLLARFR(decimal_dollar, fraction)
Converts a decimal price into a price expressed as an integer part plus a fraction.
=DOLLARFR(1.125, 16) → 1.02
DURATION(settlement, maturity, coupon, yld, frequency, [basis])
Returns the Macaulay duration (in years) of a security with periodic interest payments.
=DURATION(DATE(2025,1,1), DATE(2030,1,1), 0.08, 0.09, 2, 0) → 4.20
EFFECT(nominal_rate, npery)
Returns the effective annual interest rate given a nominal rate and the number of compounding periods per year.
=EFFECT(0.05, 4) → 0.05095
FV(rate, nper, pmt, [pv], [type])
Returns the future value of an investment with constant periodic payments and a constant interest rate.
=FV(0.05/12, 60, -200) → 13601.21
FVSCHEDULE(principal, schedule)
Returns the future value of a principal after applying a series of compound interest rates.
=FVSCHEDULE(1000, {0.05,0.05,0.035}) → 1141.09
INTRATE(settlement, maturity, investment, redemption, [basis])
Returns the interest rate for a fully invested security.
=INTRATE(DATE(2025,1,1), DATE(2026,1,1), 1000000, 1014420, 0) → 0.01442
IPMT(rate, per, nper, pv, [fv], [type])
Returns the interest portion of a loan payment for a given period.
=IPMT(0.05/12, 1, 60, 20000) → -83.33
IRR(values, [guess])
Returns the internal rate of return for a series of periodic cash flows.
=IRR({-1000,300,400,500}) → 0.0886
ISPMT(rate, per, nper, pv)
Returns the interest paid in a given period of a loan with equal principal repayments.
=ISPMT(0.05/12, 1, 60, 20000) → -81.94
MDURATION(settlement, maturity, coupon, yld, frequency, [basis])
Returns the modified Macaulay duration (in years) of a security with periodic interest payments.
=MDURATION(DATE(2025,1,1), DATE(2030,1,1), 0.08, 0.09, 2, 0) → 4.02
MIRR(values, finance_rate, reinvest_rate)
Returns the modified internal rate of return, accounting for both the cost of financing and the reinvestment rate.
=MIRR({-1000,300,400,500}, 0.10, 0.12) → 0.0982
NOMINAL(effect_rate, npery)
Returns the nominal annual interest rate given an effective rate and the number of compounding periods per year.
=NOMINAL(0.053543, 4) → 0.0525
NPER(rate, pmt, pv, [fv], [type])
Returns the number of payment periods for an investment with constant payments and a constant interest rate.
=NPER(0.05/12, -200, 8000) → 43.85
NPV(rate, value1, [value2], ...)
Returns the net present value of a series of periodic cash flows discounted at a constant rate.
=NPV(0.08, 200, 300, 400) → 759.93
ODDFPRICE(settlement, maturity, issue, first_coupon, rate, yld, redemption, frequency, [basis])
Returns the price per $100 face value of a security with an odd (short or long) first coupon period.
=ODDFPRICE(DATE(2025,2,15), DATE(2030,1,1), DATE(2025,1,1), DATE(2025,7,1), 0.06, 0.07, 100, 2, 0) → 95.90
ODDFYIELD(settlement, maturity, issue, first_coupon, rate, pr, redemption, frequency, [basis])
Returns the yield of a security with an odd first coupon period.
=ODDFYIELD(DATE(2025,2,15), DATE(2030,1,1), DATE(2025,1,1), DATE(2025,7,1), 0.06, 95.90, 100, 2, 0) → 0.0725
ODDLPRICE(settlement, maturity, last_interest, rate, yld, redemption, frequency, [basis])
Returns the price per $100 face value of a security with an odd (short or long) last coupon period.
=ODDLPRICE(DATE(2029,2,7), DATE(2029,6,15), DATE(2028,10,15), 0.05, 0.045, 100, 2, 0) → 99.88
ODDLYIELD(settlement, maturity, last_interest, rate, pr, redemption, frequency, [basis])
Returns the yield of a security with an odd last coupon period.
=ODDLYIELD(DATE(2029,2,7), DATE(2029,6,15), DATE(2028,10,15), 0.05, 99.88, 100, 2, 0) → 0.0452
PDURATION(rate, pv, fv)
Returns the number of periods required for an investment to reach a specified future value at a constant rate.
=PDURATION(0.025, 2000, 2200) → 3.86
PMT(rate, nper, pv, [fv], [type])
Returns the constant periodic payment for a loan or investment.
=PMT(0.05/12, 60, 20000) → -377.42
PPMT(rate, per, nper, pv, [fv], [type])
Returns the principal portion of a loan payment for a given period.
=PPMT(0.05/12, 1, 60, 20000) → -294.09
PRICE(settlement, maturity, rate, yld, redemption, frequency, [basis])
Returns the price per $100 face value of a security that pays periodic interest.
=PRICE(DATE(2025,1,1), DATE(2030,1,1), 0.08, 0.09, 100, 2, 0) → 96.04
PRICEDISC(settlement, maturity, discount, redemption, [basis])
Returns the price per $100 face value of a discounted security.
=PRICEDISC(DATE(2025,1,1), DATE(2025,7,1), 0.05, 100, 0) → 97.5
PRICEMAT(settlement, maturity, issue, rate, yld, [basis])
Returns the price per $100 face value of a security that pays interest at maturity.
=PRICEMAT(DATE(2025,4,1), DATE(2026,1,1), DATE(2025,1,1), 0.06, 0.065, 0) → 99.57
PV(rate, nper, pmt, [fv], [type])
Returns the present value of an investment with constant periodic payments and a constant interest rate.
=PV(0.05/12, 60, -200) → 10598.34
RATE(nper, pmt, pv, [fv], [type], [guess])
Returns the periodic interest rate of a loan or investment.
=RATE(60, -200, 10000) → 0.0062
RECEIVED(settlement, maturity, investment, discount, [basis])
Returns the amount received at maturity for a fully invested security.
=RECEIVED(DATE(2025,1,1), DATE(2026,1,1), 1000000, 0.05, 0) → 1052631.58
RRI(nper, pv, fv)
Returns an equivalent constant interest rate for the growth of an investment.
=RRI(60, 10000, 15000) → 0.006781
SLN(cost, salvage, life)
Returns the straight-line depreciation of an asset for one period.
=SLN(10000, 1000, 5) → 1800
SYD(cost, salvage, life, per)
Returns the sum-of-years'-digits depreciation of an asset for a given period.
=SYD(10000, 1000, 5, 1) → 3000
TBILLEQ(settlement, maturity, discount)
Returns the bond-equivalent yield for a Treasury bill.
=TBILLEQ(DATE(2025,1,1), DATE(2025,7,1), 0.05) → 0.0520
Note: for maturities over 182 days the code falls back to the same short-maturity formula rather than Excel's full bond-equivalent calculation.
TBILLPRICE(settlement, maturity, discount)
Returns the price per $100 face value of a Treasury bill.
=TBILLPRICE(DATE(2025,1,1), DATE(2025,7,1), 0.05) → 97.49
TBILLYIELD(settlement, maturity, pr)
Returns the yield of a Treasury bill given its price.
=TBILLYIELD(DATE(2025,1,1), DATE(2025,7,1), 97.5) → 0.0510
VDB(cost, salvage, life, start_period, end_period, [factor], [no_switch])
Returns the depreciation of an asset over a range of periods using the (variable) declining-balance method, with optional switch to straight-line.
=VDB(2400, 300, 10, 0, 1) → 480
XIRR(values, dates, [guess])
Returns the internal rate of return for a series of cash flows occurring at irregular dates.
=XIRR({-10000,2750,4250,3250,2750}, {dates}) → 0.3734
XNPV(rate, values, dates)
Returns the net present value for a series of cash flows occurring at irregular dates (discounted on a 365-day-year basis).
=XNPV(0.09, {-10000,2750,4250,3250,2750}, {dates}) → 2086.65
YIELD(settlement, maturity, rate, pr, redemption, frequency, [basis])
Returns the yield of a security that pays periodic interest.
=YIELD(DATE(2025,1,1), DATE(2030,1,1), 0.08, 96.04, 100, 2, 0) → 0.09
YIELDDISC(settlement, maturity, pr, redemption, [basis])
Returns the annual yield of a discounted security.
=YIELDDISC(DATE(2025,1,1), DATE(2025,7,1), 97.5, 100, 0) → 0.0513
YIELDMAT(settlement, maturity, issue, rate, pr, [basis])
Returns the annual yield of a security that pays interest at maturity.
=YIELDMAT(DATE(2025,4,1), DATE(2026,1,1), DATE(2025,1,1), 0.06, 99.57, 0) → 0.0651
BESSELJ(x, n)
Returns the Bessel function Jₙ(x) of the first kind, evaluated at x for the integer order n.
=BESSELJ(1.9, 2) → 0.329926
Note: order n is truncated to an integer and must be >= 0, otherwise #NUM!.
BESSELY(x, n)
Returns the Bessel function Yₙ(x) (Weber/Neumann function) of the second kind, evaluated at x for the integer order n.
=BESSELY(2.5, 1) → 0.145918
Note: requires x > 0 and order n >= 0, otherwise #NUM!.
BESSELI(x, n)
Returns the modified Bessel function Iₙ(x) of the first kind, evaluated at x for the integer order n.
=BESSELI(1.5, 1) → 0.981666
Note: order n is truncated to an integer and must be >= 0, otherwise #NUM!.
BESSELK(x, n)
Returns the modified Bessel function Kₙ(x) of the second kind, evaluated at x for the integer order n.
=BESSELK(1.5, 1) → 0.277388
Note: requires x > 0 and order n >= 0, otherwise #NUM!.
BIN2DEC(number)
Converts a binary number (10-bit two's complement, range -512 to 511) to its decimal value.
=BIN2DEC("1100100") → 100
BIN2HEX(number, [places])
Converts a binary number to hexadecimal text, optionally padded to the given number of places.
=BIN2HEX("11111011", 4) → "00FB"
BIN2OCT(number, [places])
Converts a binary number to octal text, optionally padded to the given number of places.
=BIN2OCT("1001", 3) → "011"
BITAND(number1, number2)
Returns the bitwise AND of two non-negative integers (each in the range 0 to 2^48-1).
=BITAND(5, 3) → 1
BITLSHIFT(number, shift_amount)
Returns a number shifted left by shift_amount bits (a negative shift_amount shifts right).
=BITLSHIFT(4, 2) → 16
BITOR(number1, number2)
Returns the bitwise OR of two non-negative integers (each in the range 0 to 2^48-1).
=BITOR(5, 3) → 7
BITRSHIFT(number, shift_amount)
Returns a number shifted right by shift_amount bits (a negative shift_amount shifts left).
=BITRSHIFT(16, 2) → 4
BITXOR(number1, number2)
Returns the bitwise exclusive OR (XOR) of two non-negative integers (each in the range 0 to 2^48-1).
=BITXOR(5, 3) → 6
COMPLEX(real_num, i_num, [suffix])
Builds a complex-number text string from real and imaginary coefficients, using suffix "i" (default) or "j".
=COMPLEX(3, 4) → "3+4i"
Note: suffix must be "i" or "j", otherwise #VALUE!.
CONVERT(number, from_unit, to_unit)
Converts a number from one measurement unit to another compatible unit (both must be the same physical quantity).
=CONVERT(1, "lbm", "kg") → 0.45359237
Note: supports a subset of Excel's units (mass, distance, time, force, pressure, energy, power, magnetism, temperature, volume, area, information) plus standard metric prefixes; unknown or mismatched units give #NUM!.
DEC2BIN(number, [places])
Converts a decimal integer (range -512 to 511) to binary text, optionally padded to the given number of places.
=DEC2BIN(9, 4) → "1001"
DEC2HEX(number, [places])
Converts a decimal integer to hexadecimal text, optionally padded to the given number of places.
=DEC2HEX(255) → "FF"
DEC2OCT(number, [places])
Converts a decimal integer to octal text, optionally padded to the given number of places.
=DEC2OCT(8) → "10"
DELTA(number1, [number2])
Returns 1 if the two numbers are equal and 0 otherwise (number2 defaults to 0).
=DELTA(5, 5) → 1
ERF(lower_limit, [upper_limit])
Returns the error function integrated from 0 to lower_limit, or between lower_limit and upper_limit when both are given.
=ERF(1) → 0.842701
ERF.PRECISE(x)
Returns the error function integrated from 0 to x.
=ERF.PRECISE(1) → 0.842701
ERFC(x)
Returns the complementary error function, 1 minus ERF(x).
=ERFC(1) → 0.157299
ERFC.PRECISE(x)
Returns the complementary error function, 1 minus ERF(x).
=ERFC.PRECISE(1) → 0.157299
GESTEP(number, [step])
Returns 1 if number is greater than or equal to step and 0 otherwise (step defaults to 0).
=GESTEP(5, 4) → 1
HEX2BIN(number, [places])
Converts a hexadecimal number to binary text, optionally padded to the given number of places.
=HEX2BIN("F", 8) → "00001111"
Note: the value must fit the binary range -512 to 511, otherwise #NUM!.
HEX2DEC(number)
Converts a hexadecimal number (40-bit two's complement) to its decimal value.
=HEX2DEC("FF") → 255
HEX2OCT(number, [places])
Converts a hexadecimal number to octal text, optionally padded to the given number of places.
=HEX2OCT("FF") → "377"
IMABS(inumber)
Returns the absolute value (modulus) of a complex number.
=IMABS("3+4i") → 5
IMAGINARY(inumber)
Returns the imaginary coefficient of a complex number.
=IMAGINARY("3+4i") → 4
IMARGUMENT(inumber)
Returns the argument (angle in radians) of a complex number.
=IMARGUMENT("1+i") → 0.785398
Note: for a zero complex number Excel for the web returns #DIV/0!, whereas CellBasics returns #NUM!.
IMCONJUGATE(inumber)
Returns the complex conjugate of a complex number.
=IMCONJUGATE("3+4i") → "3-4i"
IMCOS(inumber)
Returns the cosine of a complex number.
=IMCOS("1+i") → "0.83373-0.988898i"
IMCOSH(inumber)
Returns the hyperbolic cosine of a complex number.
=IMCOSH("1+i") → "0.83373+0.988898i"
IMCOT(inumber)
Returns the cotangent (cos/sin) of a complex number.
=IMCOT("1+i") → "0.217622-0.868014i"
IMCSC(inumber)
Returns the cosecant (1/sin) of a complex number.
=IMCSC("1+i") → "0.621518-0.303931i"
IMCSCH(inumber)
Returns the hyperbolic cosecant (1/sinh) of a complex number.
=IMCSCH("1+i") → "0.303931-0.621518i"
IMDIV(inumber1, inumber2)
Returns the quotient of two complex numbers.
=IMDIV("-238+240i", "10+24i") → "5+12i"
IMEXP(inumber)
Returns the exponential (e raised to the power) of a complex number.
=IMEXP("1+i") → "1.46869+2.28736i"
IMLN(inumber)
Returns the natural logarithm of a complex number.
=IMLN("3+4i") → "1.60943791243410+0.927295218001612i"
IMLOG10(inumber)
Returns the base-10 logarithm of a complex number.
=IMLOG10("3+4i") → "0.698970004336019+0.402719196273373i"
IMLOG2(inumber)
Returns the base-2 logarithm of a complex number.
=IMLOG2("3+4i") → "2.32192809488736+1.33780421245098i"
IMPOWER(inumber, number)
Returns a complex number raised to the given power.
=IMPOWER("2+3i", 2) → "-5+12i"
IMPRODUCT(inumber1, [inumber2], ...)
Returns the product of the given complex numbers.
=IMPRODUCT("3+4i", "5-3i") → "27+11i"
IMREAL(inumber)
Returns the real coefficient of a complex number.
=IMREAL("6-9i") → 6
IMSEC(inumber)
Returns the secant (1/cos) of a complex number.
=IMSEC("1+i") → "0.498337+0.59104i"
IMSECH(inumber)
Returns the hyperbolic secant (1/cosh) of a complex number.
=IMSECH("1+i") → "0.498337-0.59104i"
IMSIN(inumber)
Returns the sine of a complex number.
=IMSIN("1+i") → "1.29845758141598+0.634963914784736i"
IMSINH(inumber)
Returns the hyperbolic sine of a complex number.
=IMSINH("1+i") → "0.634963914784736+1.29845758141598i"
IMSQRT(inumber)
Returns the principal square root of a complex number.
=IMSQRT("3+4i") → "2+i"
IMSUB(inumber1, inumber2)
Returns the difference of two complex numbers.
=IMSUB("13+4i", "5+3i") → "8+i"
IMSUM(inumber1, [inumber2], ...)
Returns the sum of the given complex numbers.
=IMSUM("3+4i", "5-3i") → "8+i"
IMTAN(inumber)
Returns the tangent (sin/cos) of a complex number.
=IMTAN("1+i") → "0.271753-0.868014i"
OCT2BIN(number, [places])
Converts an octal number to binary text, optionally padded to the given number of places.
=OCT2BIN("7", 3) → "111"
Note: the value must fit the binary range -512 to 511, otherwise #NUM!.
OCT2DEC(number)
Converts an octal number (30-bit two's complement) to its decimal value.
=OCT2DEC("17") → 15
OCT2HEX(number, [places])
Converts an octal number to hexadecimal text, optionally padded to the given number of places.
=OCT2HEX("17") → "F"
CHAR(number)
Returns the single character for the given code point (1–255) using the ISO 8859-1 (Latin-1) character set.
=CHAR(65) → "A"
Note: codes 128–159 map to ISO 8859-1 control characters rather than the Windows-1252 (ANSI) characters Excel for the web returns; values outside 1–255 raise #VALUE!.
CLEAN(text)
Removes all non-printable control characters (byte codes 0–31) from the text.
=CLEAN("a"&CHAR(9)&"b") → "ab"
CODE(text)
Returns the numeric code of the first character of the text.
=CODE("A") → 65
Note: only characters with code below 128 are supported — a first character of 128 or above raises #VALUE! where Excel for the web returns a code; an empty string also errors.
CONCAT(text1, [text2], ...)
Joins all the given text values into a single string.
=CONCAT("a", "b", "c") → "abc"
CONCATENATE(text1, [text2], ...)
Joins several text values into one string (identical to CONCAT in this implementation).
=CONCATENATE("Hello", " ", "World") → "Hello World"
EXACT(text1, text2)
Returns TRUE if the two text values are exactly the same, including case; otherwise FALSE.
=EXACT("Word", "word") → FALSE
FIND(find_text, within_text, [start_num])
Returns the 1-based position of find_text within within_text, searching case-sensitively from start_num (default 1).
=FIND("l", "hello") → 3
FIXED(number, [decimals], [no_commas])
Formats a number with a fixed count of decimals (default 2) as text, adding thousands commas unless no_commas is TRUE.
=FIXED(1234.567, 1) → "1,234.6"
Note: grouping uses a literal comma and the decimal point is always ".", regardless of locale.
LEFT(text, [num_chars])
Returns the leftmost num_chars characters of the text (default 1).
=LEFT("hello", 3) → "hel"
Note: a num_chars of 0 raises #VALUE!, whereas Excel for the web returns an empty string (negative values error in both).
LEFTB(text, [num_chars])
Returns the leftmost characters of the text (default 1).
=LEFTB("hello", 3) → "hel"
Note: counts characters like LEFT, matching Excel for the web's default (non-DBCS) behavior where LEFTB is not byte-based.
LEN(text)
Returns the number of characters in the text.
=LEN("hello") → 5
LENB(text)
Returns the length of the text.
=LENB("hello") → 5
Note: counts characters like LEN, matching Excel for the web's default (non-DBCS) behavior where LENB is not byte-based.
LOWER(text)
Converts all letters in the text to lowercase.
=LOWER("HELLO") → "hello"
MID(text, start_num, num_chars)
Returns num_chars characters from text starting at the 1-based position start_num.
=MID("hello", 2, 3) → "ell"
Note: unlike Excel for the web, a start_num below 1 returns an empty string instead of #VALUE!, and a negative num_chars returns the remainder of the text from start_num instead of #VALUE!.
MIDB(text, start_num, num_chars)
Returns num_chars characters from text starting at position start_num.
=MIDB("hello", 2, 3) → "ell"
Note: positions and counts are in characters like MID, matching Excel for the web's default (non-DBCS) behavior where MIDB is not byte-based.
NUMBERVALUE(text, [decimal_separator], [group_separator])
Converts text to a number using the given decimal and group separators (defaulting to the locale's), stripping group separators and interpreting a trailing "%".
=NUMBERVALUE("1,234.5", ".", ",") → 1234.5
PROPER(text)
Capitalizes the first letter of each word and lowercases the rest.
=PROPER("hello world") → "Hello World"
Note: only ASCII letters (A–Z, a–z) are re-cased; accented and non-Latin letters are left unchanged.
REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])
Non-standard: returns the first ECMAScript-regex match in text, or its first capture group if the pattern has one.
=REGEXEXTRACT("abc123", "[0-9]+") → "123"
Note: uses ECMAScript (std::regex) syntax, which differs from Excel for the web's regex flavor; return_mode must be 0 (Excel for the web also allows 1 and 2); case_sensitivity 0 = case-sensitive (default), 1 = case-insensitive; a non-match raises #VALUE!.
REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])
Non-standard: replaces matches of an ECMAScript regex in text with replacement; occurrence 0 (default) replaces all, otherwise only the Nth match.
=REGEXREPLACE("a1b2", "[0-9]", "#") → "a#b#"
Note: uses ECMAScript (std::regex) syntax, which differs from Excel for the web's regex flavor; occurrence 0 (default) replaces all matches and N replaces only the Nth (text is returned unchanged if it does not exist); replacement supports $1-style group references; case_sensitivity 0 = case-sensitive (default), 1 = case-insensitive.
REGEXTEST(text, pattern, [case_sensitivity])
Non-standard: returns TRUE if the ECMAScript regex pattern is found anywhere in text, otherwise FALSE.
=REGEXTEST("abc123", "[0-9]+") → TRUE
Note: uses ECMAScript (std::regex) syntax, which differs from Excel for the web's regex flavor; returns FALSE if either text or pattern is empty; case_sensitivity 0 = case-sensitive (default), 1 = case-insensitive.
REPLACE(old_text, start_num, num_chars, new_text)
Replaces num_chars characters of old_text, starting at position start_num, with new_text.
=REPLACE("abcdef", 2, 3, "XY") → "aXYef"
REPT(text, number_times)
Returns text repeated number_times times.
=REPT("ab", 3) → "ababab"
RIGHT(text, [num_chars])
Returns the rightmost num_chars characters of the text (default 1).
=RIGHT("hello", 3) → "llo"
Note: a negative num_chars returns the whole text instead of the #VALUE! error Excel for the web raises (0 returns an empty string).
RIGHTB(text, [num_chars])
Returns the rightmost characters of the text (default 1).
=RIGHTB("hello", 3) → "llo"
Note: counts characters like RIGHT, matching Excel for the web's default (non-DBCS) behavior where RIGHTB is not byte-based.
SEARCH(find_text, within_text, [start_num])
Returns the 1-based position of find_text within within_text, searching case-insensitively from start_num (default 1).
=SEARCH("L", "HELLO") → 3
SUBSTITUTE(text, old_text, new_text, [instance_num])
Replaces occurrences of old_text with new_text; without instance_num all occurrences are replaced, otherwise only the specified one.
=SUBSTITUTE("a-b-c", "-", "+") → "a+b+c"
T(value)
Returns the value if it is text; otherwise returns an empty string.
=T("hello") → "hello"
TEXT(value, format_text)
Formats a numeric value as text according to a number/date format code.
=TEXT(1234.5, "#,##0.00") → "1,234.50"
Note: supports a subset of Excel formatting (number, date, scientific, fraction and accounting patterns with conditional sections).
TEXTAFTER(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])
Returns the portion of text after the given occurrence of delimiter.
=TEXTAFTER("a-b-c", "-") → "b-c"
Note: match_mode 1 makes matching case-insensitive; instance_num may be negative to count from the end; match_end defaults to 1 (Excel for the web defaults to 0), so a missing delimiter returns an empty string instead of #N/A. #N/A is returned only when the requested instance is out of range and no if_not_found is supplied.
TEXTBEFORE(text, delimiter, [instance_num], [match_mode], [match_end], [if_not_found])
Returns the portion of text before the given occurrence of delimiter.
=TEXTBEFORE("a-b-c", "-") → "a"
Note: match_mode 1 makes matching case-insensitive; instance_num may be negative to count from the end; match_end defaults to 1 (Excel for the web defaults to 0), so a missing delimiter returns the whole text instead of #N/A. #N/A is returned only when the requested instance is out of range and no if_not_found is supplied.
TEXTJOIN(delimiter, ignore_empty, text1, ...)
Joins text values, inserting delimiter between them and optionally skipping empty values.
=TEXTJOIN("-", TRUE, "a", "b", "c") → "a-b-c"
TRIM(text)
Removes leading and trailing spaces and collapses runs of interior spaces to single spaces.
=TRIM(" a b ") → "a b"
Note: only the ASCII space character (0x20) is treated as space; tabs and other whitespace are preserved.
UNICODE(text)
Returns the Unicode code point of the first character of the text.
=UNICODE("A") → 65
UPPER(text)
Converts all letters in the text to uppercase.
=UPPER("hello") → "HELLO"
VALUE(text)
Converts text that represents a number, date, time or boolean into its underlying numeric value.
=VALUE("123") → 123
Note: dates/times return their serial value and booleans return 0/1; currency text is not yet handled, and unrecognized text raises #VALUE!.
DATE(year, month, day)
Returns the serial date value for the given year, month and day.
=DATE(2026, 7, 7) → 2026-07-07
DATEVALUE(date_text)
Converts a date stored as text into a serial date value.
=DATEVALUE("2026-07-07") → 2026-07-07
DAY(serial_number)
Returns the day of the month (1–31) of a date.
=DAY(DATE(2026, 7, 7)) → 7
DAYS(end_date, start_date)
Returns the number of days between the end date and the start date.
=DAYS(DATE(2026, 7, 7), DATE(2026, 7, 1)) → 6
DAYS360(start_date, end_date, [method])
Returns the number of days between two dates based on a 360-day year (twelve 30-day months); [method] TRUE uses the European convention, FALSE (default) the US/NASD convention.
=DAYS360(DATE(2026, 1, 1), DATE(2026, 12, 31)) → 360
EDATE(start_date, months)
Returns the date that is the given number of months before or after the start date.
=EDATE(DATE(2026, 7, 7), 1) → 2026-08-07
EOMONTH(start_date, months)
Returns the last day of the month a given number of months before or after the start date.
=EOMONTH(DATE(2026, 7, 7), 0) → 2026-07-31
HOUR(serial_number)
Returns the hour (0–23) of a time value.
=HOUR(TIME(14, 30, 0)) → 14
ISOWEEKNUM(date)
Returns the ISO 8601 week number (weeks start on Monday) of a given date.
=ISOWEEKNUM(DATE(2026, 7, 7)) → 28
MINUTE(serial_number)
Returns the minute (0–59) of a time value.
=MINUTE(TIME(14, 30, 0)) → 30
MONTH(serial_number)
Returns the month (1–12) of a date.
=MONTH(DATE(2026, 7, 7)) → 7
NETWORKDAYS(start_date, end_date, [holiday1], [holiday2], ...)
Returns the number of whole working days between two dates, excluding weekends (Saturday and Sunday) and any listed holidays.
=NETWORKDAYS(DATE(2026, 7, 1), DATE(2026, 7, 7)) → 5
Note: holidays are supplied as additional individual date arguments rather than as a single range.
NOW()
Returns the current date and time.
=NOW() → 2026-07-07 14:30:00
SECOND(serial_number)
Returns the second (0–59) of a time value.
=SECOND(TIME(14, 30, 15)) → 15
TIME(hour, minute, second)
Returns the decimal time value for the given hour, minute and second.
=TIME(14, 30, 0) → 14:30:00
TIMEVALUE(time_text)
Converts a time stored as text into a decimal time value.
=TIMEVALUE("14:30:00") → 14:30:00
TODAY()
Returns the current date.
=TODAY() → 2026-07-07
WEEKDAY(serial_number, [return_type])
Returns the day of the week of a date as a number; [return_type] (default 1) selects the numbering scheme (1/17, 2, 3, or 11–16).
=WEEKDAY(DATE(2026, 7, 7)) → 3
WEEKNUM(serial_number, [return_type])
Returns the week number of a date within the year; [return_type] (default 1) sets the first day of the week, with 21 giving the ISO 8601 week number.
=WEEKNUM(DATE(2026, 7, 7)) → 28
YEAR(serial_number)
Returns the year of a date.
=YEAR(DATE(2026, 7, 7)) → 2026
YEARFRAC(start_date, end_date, [basis])
Returns the fraction of a year represented by the number of whole days between two dates; [basis] (default 0) selects the day-count convention (0=US 30/360, 1=actual/actual, 2=actual/360, 3=actual/365, 4=European 30/360).
=YEARFRAC(DATE(2026, 1, 1), DATE(2026, 7, 7)) → 0.5166667
IF(logical_test, value_if_true, value_if_false)
Returns value_if_true when the logical test evaluates to TRUE, otherwise returns value_if_false.
=IF(A1>10, "big", "small") → "big"
Note: All three arguments are required; unlike Excel for the web, value_if_true and value_if_false cannot be omitted.
IFERROR(value, value_if_error)
Returns value_if_error if the first argument evaluates to an error, otherwise returns the value itself.
=IFERROR(1/0, "err") → "err"
IFNA(value, value_if_na)
Returns value_if_na only when the first argument produces a #N/A error, otherwise returns the value itself.
=IFNA(NA(), "missing") → "missing"
IFS(logical_test1, value1, [logical_test2, value2], ...)
Evaluates conditions in order and returns the value paired with the first test that is TRUE.
=IFS(A1>90, "A", A1>80, "B") → "A"
AND(logical1, logical2)
Returns TRUE only when both logical arguments are TRUE.
=AND(A1>0, A1<10) → TRUE
Note: Exactly two arguments are required, unlike Excel for the web which accepts 1 to 255.
FALSE()
Returns the logical value FALSE.
=FALSE() → FALSE
NOT(logical)
Reverses the logical value of its single argument.
=NOT(TRUE()) → FALSE
OR(logical1, [logical2], ...)
Returns TRUE if any one of the logical arguments is TRUE.
=OR(A1>10, B1>10) → TRUE
TRUE()
Returns the logical value TRUE.
=TRUE() → TRUE
XOR(logical1, [logical2], ...)
Returns the exclusive-or of its arguments, i.e. TRUE when an odd number of them are TRUE.
=XOR(TRUE(), FALSE()) → TRUE
SWITCH(expression, value1, result1, [value2, result2], ..., [default])
Compares the expression against each value in turn and returns the matching result, or the trailing default if none match.
=SWITCH(2, 1, "one", 2, "two", "other") → "two"
COUNTIF(range, criteria)
Counts the cells in the range that meet the given criteria.
=COUNTIF(A1:A10, ">10") → 3
SUMIF(range, criteria, [sum_range])
Adds the values in sum_range (or range itself) for rows where range meets the criteria.
=SUMIF(A1:A10, ">10", B1:B10) → 150
AVERAGEIF(range, criteria, [average_range])
Averages the values in average_range (or range itself) for cells where range meets the criteria.
=AVERAGEIF(A1:A10, "apple", B1:B10) → 25
SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
Sums the cells in sum_range whose corresponding cells satisfy every criteria_range/criteria pair.
=SUMIFS(C1:C10, A1:A10, "apple", B1:B10, ">10") → 80
COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...)
Counts the rows where every criteria_range/criteria pair is satisfied simultaneously.
=COUNTIFS(A1:A10, "apple", B1:B10, ">10") → 4
AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
Averages the cells in average_range whose corresponding cells satisfy every criteria_range/criteria pair.
=AVERAGEIFS(C1:C10, A1:A10, "apple", B1:B10, ">10") → 20
ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])
Builds a cell address as text from a row and column number, with optional absolute/relative style, A1 or R1C1 notation, and sheet name.
=ADDRESS(2, 3) → $C$2
Note: abs_num must be 1-4 (1 = fully absolute, 4 = fully relative); a1 = FALSE selects R1C1 style. Row/column must be within Excel bounds or a #VALUE! error is raised.
CHOOSE(index_num, value1, [value2], ...)
Returns the value from the argument list at the position given by index_num.
=CHOOSE(2, "Mon", "Tue", "Wed") → Tue
Note: index_num is truncated to an integer and must be between 1 and the number of value arguments, otherwise a #VALUE! error is raised.
COLUMN([reference])
Returns the column number of a reference, or of the cell containing the formula when no reference is given.
=COLUMN(C5) → 3
COLUMNS(array)
Returns the number of columns spanned by a reference or array.
=COLUMNS(A1:C1) → 3
ROW([reference])
Returns the row number of a reference, or of the cell containing the formula when no reference is given.
=ROW(A5) → 5
ROWS(array)
Returns the number of rows spanned by a reference or array.
=ROWS(A1:A9) → 9
XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
Searches lookup_array for lookup_value and returns the matching item from return_array, or if_not_found when no match exists.
=XLOOKUP("id", A1:A9, B1:B9) → 42
Note: unlike Excel for the web, this returns only the single matching cell and does not spill an entire row or column of results. match_mode supports 0 (exact), -1 (next smaller), 1 (next larger) and 2 (wildcards ?, *, ~); search_mode -1/-2 reverse the scan direction, but 2/-2 do not perform a true binary search, so sorting is not required.
INDEX(array, row_num, [column_num])
Returns the value of a cell at a given row and column position within an array or reference.
=INDEX(A1:C9, 2, 3) → 42
Note: this function is not yet implemented and currently returns no value.
ERROR.TYPE(reference)
Returns a number identifying the error present in a referenced cell or expression, or #N/A if there is no error.
=ERROR.TYPE(A1) → 2
ISBLANK(value)
Returns TRUE if value refers to an empty cell, otherwise FALSE.
=ISBLANK(A1) → TRUE
ISERR(value)
Returns TRUE if value is any error other than #N/A, otherwise FALSE.
=ISERR(1/0) → TRUE
ISERROR(value)
Returns TRUE if value is any error, including #N/A, otherwise FALSE.
=ISERROR(1/0) → TRUE
ISEVEN(number)
Returns TRUE if number, truncated toward zero, is even.
=ISEVEN(4) → TRUE
ISFORMULA(reference)
Returns TRUE if the referenced cell contains a formula, otherwise FALSE.
=ISFORMULA(A1) → TRUE
ISLOGICAL(value)
Returns TRUE if value is a logical (boolean) value, otherwise FALSE.
=ISLOGICAL(TRUE) → TRUE
ISNA(value)
Returns TRUE if value is the #N/A error, otherwise FALSE.
=ISNA(NA()) → TRUE
ISNONTEXT(value)
Returns TRUE if value is not text, otherwise FALSE.
=ISNONTEXT(5) → TRUE
Note: values that evaluate to an error are treated as non-text and return TRUE.
ISNUMBER(value)
Returns TRUE if value is a number, otherwise FALSE.
=ISNUMBER(5) → TRUE
ISODD(number)
Returns TRUE if number, truncated toward zero, is odd.
=ISODD(3) → TRUE
ISREF(value)
Returns TRUE if value is a cell reference, otherwise FALSE.
=ISREF(A1) → TRUE
ISTEXT(value)
Returns TRUE if value is text, otherwise FALSE.
=ISTEXT("hi") → TRUE
N(value)
Converts value to a number: numbers pass through, text and blanks become 0, and errors return their error-type code.
=N(5) → 5
Note: an error argument returns its numeric error-type code instead of propagating the error as Excel for the web does (booleans are converted to 1/0 as in Excel).
NA()
Returns the #N/A error value.
=NA() → #N/A
SHEET([value])
Returns the sheet number of a referenced cell, or of the current sheet when no argument is given.
=SHEET(A1) → 1
SHEETS()
Returns the total number of sheets in the workbook.
=SHEETS() → 3
Note: this implementation takes no arguments and always returns the workbook sheet count.
TYPE(value)
Returns a code for the type of value: 1 for a number, 2 for text, 4 for logical, and 16 for an error.
=TYPE("hi") → 2
Note: the array type code (64) is not produced.