Writing formulas

A formula begins with an equals sign, for example =SUM(A1:A9)/2. Formulas combine values, cell references and functions using the usual operators:

Cells 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!.

Compatibility

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.

Function reference

368 functions are implemented, grouped by category. Type in the box to filter by name or description.

Math & Trigonometry (68)

ABS

ABS(number)

Returns the absolute value of a number.

=ABS(-5) → 5

ACOS

ACOS(number)

Returns the arccosine (in radians) of a number between -1 and 1.

=ACOS(1) → 0

ACOSH

ACOSH(number)

Returns the inverse hyperbolic cosine of a number (number must be >= 1).

=ACOSH(1) → 0

ACOT

ACOT(number)

Returns the arccotangent (in radians) of a number.

=ACOT(1) → 0.785398

AGGREGATE

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

ARABIC(text)

Converts a Roman numeral string to its Arabic (decimal) number.

=ARABIC("LVII") → 57

ASIN

ASIN(number)

Returns the arcsine (in radians) of a number between -1 and 1.

=ASIN(1) → 1.570796

ASINH

ASINH(number)

Returns the inverse hyperbolic sine of a number.

=ASINH(0) → 0

ATAN

ATAN(number)

Returns the arctangent (in radians) of a number.

=ATAN(1) → 0.785398

ATAN2

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

ATANH(number)

Returns the inverse hyperbolic tangent of a number strictly between -1 and 1.

=ATANH(0) → 0

BASE

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

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

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

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

COMBIN(number, number_chosen)

Returns the number of combinations (without repetition) of number_chosen items from number items.

=COMBIN(8, 2) → 28

COMBINA

COMBINA(number, number_chosen)

Returns the number of combinations with repetition of number_chosen items from number items.

=COMBINA(4, 3) → 20

COS

COS(number)

Returns the cosine of an angle given in radians.

=COS(0) → 1

COSH

COSH(number)

Returns the hyperbolic cosine of a number.

=COSH(0) → 1

COT

COT(number)

Returns the cotangent of an angle given in radians.

=COT(1) → 0.642093

COTH

COTH(number)

Returns the hyperbolic cotangent of a number.

=COTH(1) → 1.313035

CSCH

CSCH(number)

Returns the hyperbolic cosecant of a number.

=CSCH(1) → 0.850918

DECIMAL

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

DEGREES(angle)

Converts an angle from radians to degrees.

=DEGREES(PI()) → 180

EVEN

EVEN(number)

Rounds a number away from zero to the nearest even integer.

=EVEN(1.5) → 2

EXP

EXP(number)

Returns e raised to the power of the given number.

=EXP(1) → 2.718282

FACT

FACT(number)

Returns the factorial of a non-negative number (truncated toward zero).

=FACT(5) → 120

FACTDOUBLE

FACTDOUBLE(number)

Returns the double factorial (n!!) of a non-negative number.

=FACTDOUBLE(7) → 105

FLOOR

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

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

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

GCD(number1, [number2], ...)

Returns the greatest common divisor of the supplied non-negative integers.

=GCD(24, 36) → 12

INT

INT(number)

Rounds a number down to the nearest integer (toward negative infinity).

=INT(-8.9) → -9

LCM

LCM(number1, [number2], ...)

Returns the least common multiple of the supplied non-negative integers.

=LCM(24, 36) → 72

LN

LN(number)

Returns the natural (base-e) logarithm of a positive number.

=LN(1) → 0

LOG

LOG(number, [base])

Returns the logarithm of a positive number to the given base (default 10).

=LOG(8, 2) → 3

LOG10

LOG10(number)

Returns the base-10 logarithm of a positive number.

=LOG10(1000) → 3

MAX

MAX(number1, [number2], ...)

Returns the largest of the supplied values.

=MAX(3, 7, 2) → 7

MIN

MIN(number1, [number2], ...)

Returns the smallest of the supplied values.

=MIN(3, 7, 2) → 2

MOD

MOD(number, divisor)

Returns the remainder after dividing number by divisor, with the sign of the divisor.

=MOD(10, 3) → 1

MROUND

MROUND(number, multiple)

Rounds a number to the nearest multiple of the given value (ties away from zero).

=MROUND(10, 3) → 9

MULTINOMIAL

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

ODD(number)

Rounds a number away from zero to the nearest odd integer.

=ODD(1.5) → 3

PI

PI()

Returns the value of pi.

=PI() → 3.141593

POWER

POWER(number, power)

Returns a number raised to the given power.

=POWER(5, 2) → 25

PRODUCT

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

RADIANS(angle)

Converts an angle from degrees to radians.

=RADIANS(180) → 3.141593

ROMAN

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

ROUND(number, num_digits)

Rounds a number to the specified number of digits (ties away from zero).

=ROUND(2.567, 1) → 2.6

ROUNDUP

ROUNDUP(number, num_digits)

Rounds a number away from zero to the specified number of digits.

=ROUNDUP(2.1, 0) → 3

ROUNDDOWN

ROUNDDOWN(number, num_digits)

Rounds a number toward zero to the specified number of digits.

=ROUNDDOWN(2.9, 0) → 2

SUM

SUM(number1, [number2], ...)

Adds all the supplied values together.

=SUM(2, 3, 4) → 9

QUOTIENT

QUOTIENT(numerator, denominator)

Returns the integer portion of a division, truncated toward zero.

=QUOTIENT(5, 2) → 2

RAND

RAND()

Returns a random number greater than or equal to 0 and less than 1.

=RAND() → 0.512703

RANDBETWEEN

RANDBETWEEN(bottom, top)

Returns a random integer between bottom and top, inclusive.

=RANDBETWEEN(1, 6) → 4

SEC

SEC(number)

Returns the secant of an angle given in radians.

=SEC(0) → 1

SECH

SECH(number)

Returns the hyperbolic secant of a number.

=SECH(0) → 1

SERIESSUM

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

SIGN(number)

Returns -1, 0, or 1 depending on whether the number is negative, zero, or positive.

=SIGN(-8) → -1

SIN

SIN(number)

Returns the sine of an angle given in radians.

=SIN(0) → 0

SINH

SINH(number)

Returns the hyperbolic sine of a number.

=SINH(0) → 0

SQRT

SQRT(number)

Returns the square root of a non-negative number.

=SQRT(16) → 4

SQRTPI

SQRTPI(number)

Returns the square root of a non-negative number multiplied by pi.

=SQRTPI(1) → 1.772454

SUMSQ

SUMSQ(number1, [number2], ...)

Returns the sum of the squares of the supplied values.

=SUMSQ(3, 4) → 25

TAN

TAN(number)

Returns the tangent of an angle given in radians.

=TAN(0) → 0

TANH

TANH(number)

Returns the hyperbolic tangent of a number.

=TANH(0) → 0

TRUNC

TRUNC(number, [num_digits])

Truncates a number toward zero to the specified number of digits (default 0).

=TRUNC(8.9) → 8

AVERAGE

AVERAGE(number1, [number2], ...)

Returns the arithmetic mean of the supplied values.

=AVERAGE(2, 4, 6) → 4

Statistical (92)

AVEDEV

AVEDEV(number1, [number2], ...)

Returns the average of the absolute deviations of the data points from their mean.

=AVEDEV(A1:A9) → 1.02

BETA.DIST

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

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

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

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

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

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

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

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

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

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

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

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

CORREL(array1, array2)

Returns the Pearson correlation coefficient between two equal-length data sets.

=CORREL(A1:A9, B1:B9) → 0.8712

COVARIANCE.P

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

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

DEVSQ(number1, [number2], ...)

Returns the sum of the squared deviations of the data points from their mean.

=DEVSQ(A1:A9) → 48.5

EXPON.DIST

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

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

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

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

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

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

FISHER(x)

Returns the Fisher transformation of x, atanh(x), for −1 < x < 1.

=FISHER(0.75) → 0.9730

FISHERINV

FISHERINV(y)

Returns the inverse Fisher transformation, tanh(y).

=FISHERINV(0.9730) → 0.75

GAMMA

GAMMA(x)

Returns the gamma function value Γ(x); undefined for zero and negative integers.

=GAMMA(5) → 24

GAMMA.DIST

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

GAMMA.INV(probability, alpha, beta)

Returns the inverse of the gamma cumulative distribution.

=GAMMA.INV(0.068, 9, 2) → 10.8956

GAMMALN

GAMMALN(x)

Returns the natural logarithm of the gamma function, ln(Γ(x)), for x > 0.

=GAMMALN(5) → 3.1781

GAMMALN.PRECISE

GAMMALN.PRECISE(x)

Returns the natural logarithm of the gamma function, ln(Γ(x)), for x > 0.

=GAMMALN.PRECISE(5) → 3.1781

GAUSS

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

GEOMEAN(number1, [number2], ...)

Returns the geometric mean of a set of positive numbers.

=GEOMEAN(A1:A9) → 4.21

HARMEAN

HARMEAN(number1, [number2], ...)

Returns the harmonic mean of a set of positive numbers.

=HARMEAN(A1:A9) → 3.86

HYPGEOM.DIST

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

KURT(number1, [number2], ...)

Returns the sample excess kurtosis of a data set (requires at least 4 points).

=KURT(A1:A9) → -0.152

LARGE

LARGE(array, k)

Returns the k-th largest value in a data set.

=LARGE(A1:A9, 2) → 8

LOGNORM.DIST

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

LOGNORM.INV(probability, mean, standard_dev)

Returns the inverse of the lognormal cumulative distribution.

=LOGNORM.INV(0.039, 3.5, 1.2) → 4

MEDIAN

MEDIAN(number1, [number2], ...)

Returns the median (middle value) of a set of numbers.

=MEDIAN(A1:A9) → 5

MODE.SNGL

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

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

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

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

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

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

NORM.S.INV(probability)

Returns the inverse of the standard normal cumulative distribution.

=NORM.S.INV(0.9088) → 1.333

PEARSON

PEARSON(array1, array2)

Returns the Pearson product-moment correlation coefficient between two data sets.

=PEARSON(A1:A9, B1:B9) → 0.8712

PERCENTILE.INC

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

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

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

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

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

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

PHI(x)

Returns the value of the standard normal density function φ(x).

=PHI(0) → 0.3989

POISSON.DIST

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

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

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

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

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

SKEW(number1, [number2], ...)

Returns the sample skewness of a distribution (requires at least 3 points).

=SKEW(A1:A9) → 0.318

SKEW.P

SKEW.P(number1, [number2], ...)

Returns the population skewness of a distribution (requires at least 3 points).

=SKEW.P(A1:A9) → 0.265

SMALL

SMALL(array, k)

Returns the k-th smallest value in a data set.

=SMALL(A1:A9, 2) → 2

STANDARDIZE

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

VAR.S(number1, [number2], ...)

Returns the sample variance of a data set (divided by n−1).

=VAR.S(A1:A9) → 6.06

VAR.P

VAR.P(number1, [number2], ...)

Returns the population variance of a data set (divided by n).

=VAR.P(A1:A9) → 5.39

VARA

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

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

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

STDEV.P(number1, [number2], ...)

Returns the population standard deviation of a data set (based on n).

=STDEV.P(A1:A9) → 2.32

STDEVA

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

COUNT(value1, [value2], ...)

Returns the count of cells that contain numbers.

=COUNT(A1:A9) → 9

COUNTA

COUNTA(value1, [value2], ...)

Returns the count of cells that are not empty.

=COUNTA(A1:A9) → 9

COUNTBLANK

COUNTBLANK(range)

Returns the count of empty cells in a range.

=COUNTBLANK(A1:A9) → 2

MAXA

MAXA(value1, [value2], ...)

Returns the largest value in a data set, treating logical values as 1 or 0.

=MAXA(A1:A9) → 9

MINA

MINA(value1, [value2], ...)

Returns the smallest value in a data set, treating logical values as 1 or 0.

=MINA(A1:A9) → 1

Financial (55)

ACCRINT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IRR(values, [guess])

Returns the internal rate of return for a series of periodic cash flows.

=IRR({-1000,300,400,500}) → 0.0886

ISPMT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

RATE(nper, pmt, pv, [fv], [type], [guess])

Returns the periodic interest rate of a loan or investment.

=RATE(60, -200, 10000) → 0.0062

RECEIVED

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

RRI(nper, pv, fv)

Returns an equivalent constant interest rate for the growth of an investment.

=RRI(60, 10000, 15000) → 0.006781

SLN

SLN(cost, salvage, life)

Returns the straight-line depreciation of an asset for one period.

=SLN(10000, 1000, 5) → 1800

SYD

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

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

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

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

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

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

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

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

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

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

Engineering (54)

BESSELJ

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

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

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

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

BIN2DEC(number)

Converts a binary number (10-bit two's complement, range -512 to 511) to its decimal value.

=BIN2DEC("1100100") → 100

BIN2HEX

BIN2HEX(number, [places])

Converts a binary number to hexadecimal text, optionally padded to the given number of places.

=BIN2HEX("11111011", 4) → "00FB"

BIN2OCT

BIN2OCT(number, [places])

Converts a binary number to octal text, optionally padded to the given number of places.

=BIN2OCT("1001", 3) → "011"

BITAND

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

BITLSHIFT(number, shift_amount)

Returns a number shifted left by shift_amount bits (a negative shift_amount shifts right).

=BITLSHIFT(4, 2) → 16

BITOR

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

BITRSHIFT(number, shift_amount)

Returns a number shifted right by shift_amount bits (a negative shift_amount shifts left).

=BITRSHIFT(16, 2) → 4

BITXOR

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

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

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

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

DEC2HEX(number, [places])

Converts a decimal integer to hexadecimal text, optionally padded to the given number of places.

=DEC2HEX(255) → "FF"

DEC2OCT

DEC2OCT(number, [places])

Converts a decimal integer to octal text, optionally padded to the given number of places.

=DEC2OCT(8) → "10"

DELTA

DELTA(number1, [number2])

Returns 1 if the two numbers are equal and 0 otherwise (number2 defaults to 0).

=DELTA(5, 5) → 1

ERF

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

ERF.PRECISE(x)

Returns the error function integrated from 0 to x.

=ERF.PRECISE(1) → 0.842701

ERFC

ERFC(x)

Returns the complementary error function, 1 minus ERF(x).

=ERFC(1) → 0.157299

ERFC.PRECISE

ERFC.PRECISE(x)

Returns the complementary error function, 1 minus ERF(x).

=ERFC.PRECISE(1) → 0.157299

GESTEP

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

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

HEX2DEC(number)

Converts a hexadecimal number (40-bit two's complement) to its decimal value.

=HEX2DEC("FF") → 255

HEX2OCT

HEX2OCT(number, [places])

Converts a hexadecimal number to octal text, optionally padded to the given number of places.

=HEX2OCT("FF") → "377"

IMABS

IMABS(inumber)

Returns the absolute value (modulus) of a complex number.

=IMABS("3+4i") → 5

IMAGINARY

IMAGINARY(inumber)

Returns the imaginary coefficient of a complex number.

=IMAGINARY("3+4i") → 4

IMARGUMENT

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

IMCONJUGATE(inumber)

Returns the complex conjugate of a complex number.

=IMCONJUGATE("3+4i") → "3-4i"

IMCOS

IMCOS(inumber)

Returns the cosine of a complex number.

=IMCOS("1+i") → "0.83373-0.988898i"

IMCOSH

IMCOSH(inumber)

Returns the hyperbolic cosine of a complex number.

=IMCOSH("1+i") → "0.83373+0.988898i"

IMCOT

IMCOT(inumber)

Returns the cotangent (cos/sin) of a complex number.

=IMCOT("1+i") → "0.217622-0.868014i"

IMCSC

IMCSC(inumber)

Returns the cosecant (1/sin) of a complex number.

=IMCSC("1+i") → "0.621518-0.303931i"

IMCSCH

IMCSCH(inumber)

Returns the hyperbolic cosecant (1/sinh) of a complex number.

=IMCSCH("1+i") → "0.303931-0.621518i"

IMDIV

IMDIV(inumber1, inumber2)

Returns the quotient of two complex numbers.

=IMDIV("-238+240i", "10+24i") → "5+12i"

IMEXP

IMEXP(inumber)

Returns the exponential (e raised to the power) of a complex number.

=IMEXP("1+i") → "1.46869+2.28736i"

IMLN

IMLN(inumber)

Returns the natural logarithm of a complex number.

=IMLN("3+4i") → "1.60943791243410+0.927295218001612i"

IMLOG10

IMLOG10(inumber)

Returns the base-10 logarithm of a complex number.

=IMLOG10("3+4i") → "0.698970004336019+0.402719196273373i"

IMLOG2

IMLOG2(inumber)

Returns the base-2 logarithm of a complex number.

=IMLOG2("3+4i") → "2.32192809488736+1.33780421245098i"

IMPOWER

IMPOWER(inumber, number)

Returns a complex number raised to the given power.

=IMPOWER("2+3i", 2) → "-5+12i"

IMPRODUCT

IMPRODUCT(inumber1, [inumber2], ...)

Returns the product of the given complex numbers.

=IMPRODUCT("3+4i", "5-3i") → "27+11i"

IMREAL

IMREAL(inumber)

Returns the real coefficient of a complex number.

=IMREAL("6-9i") → 6

IMSEC

IMSEC(inumber)

Returns the secant (1/cos) of a complex number.

=IMSEC("1+i") → "0.498337+0.59104i"

IMSECH

IMSECH(inumber)

Returns the hyperbolic secant (1/cosh) of a complex number.

=IMSECH("1+i") → "0.498337-0.59104i"

IMSIN

IMSIN(inumber)

Returns the sine of a complex number.

=IMSIN("1+i") → "1.29845758141598+0.634963914784736i"

IMSINH

IMSINH(inumber)

Returns the hyperbolic sine of a complex number.

=IMSINH("1+i") → "0.634963914784736+1.29845758141598i"

IMSQRT

IMSQRT(inumber)

Returns the principal square root of a complex number.

=IMSQRT("3+4i") → "2+i"

IMSUB

IMSUB(inumber1, inumber2)

Returns the difference of two complex numbers.

=IMSUB("13+4i", "5+3i") → "8+i"

IMSUM

IMSUM(inumber1, [inumber2], ...)

Returns the sum of the given complex numbers.

=IMSUM("3+4i", "5-3i") → "8+i"

IMTAN

IMTAN(inumber)

Returns the tangent (sin/cos) of a complex number.

=IMTAN("1+i") → "0.271753-0.868014i"

OCT2BIN

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

OCT2DEC(number)

Converts an octal number (30-bit two's complement) to its decimal value.

=OCT2DEC("17") → 15

OCT2HEX

OCT2HEX(number, [places])

Converts an octal number to hexadecimal text, optionally padded to the given number of places.

=OCT2HEX("17") → "F"

Text (35)

CHAR

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

CLEAN(text)

Removes all non-printable control characters (byte codes 0–31) from the text.

=CLEAN("a"&CHAR(9)&"b") → "ab"

CODE

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

CONCAT(text1, [text2], ...)

Joins all the given text values into a single string.

=CONCAT("a", "b", "c") → "abc"

CONCATENATE

CONCATENATE(text1, [text2], ...)

Joins several text values into one string (identical to CONCAT in this implementation).

=CONCATENATE("Hello", " ", "World") → "Hello World"

EXACT

EXACT(text1, text2)

Returns TRUE if the two text values are exactly the same, including case; otherwise FALSE.

=EXACT("Word", "word") → FALSE

FIND

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

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

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

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

LEN(text)

Returns the number of characters in the text.

=LEN("hello") → 5

LENB

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

LOWER(text)

Converts all letters in the text to lowercase.

=LOWER("HELLO") → "hello"

MID

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

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

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

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

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

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

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

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

REPT(text, number_times)

Returns text repeated number_times times.

=REPT("ab", 3) → "ababab"

RIGHT

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

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

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

T(value)

Returns the value if it is text; otherwise returns an empty string.

=T("hello") → "hello"

TEXT

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

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

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

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

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

UNICODE(text)

Returns the Unicode code point of the first character of the text.

=UNICODE("A") → 65

UPPER

UPPER(text)

Converts all letters in the text to uppercase.

=UPPER("hello") → "HELLO"

VALUE

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 & Time (21)

DATE

DATE(year, month, day)

Returns the serial date value for the given year, month and day.

=DATE(2026, 7, 7) → 2026-07-07

DATEVALUE

DATEVALUE(date_text)

Converts a date stored as text into a serial date value.

=DATEVALUE("2026-07-07") → 2026-07-07

DAY

DAY(serial_number)

Returns the day of the month (1–31) of a date.

=DAY(DATE(2026, 7, 7)) → 7

DAYS

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

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

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

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

HOUR(serial_number)

Returns the hour (0–23) of a time value.

=HOUR(TIME(14, 30, 0)) → 14

ISOWEEKNUM

ISOWEEKNUM(date)

Returns the ISO 8601 week number (weeks start on Monday) of a given date.

=ISOWEEKNUM(DATE(2026, 7, 7)) → 28

MINUTE

MINUTE(serial_number)

Returns the minute (0–59) of a time value.

=MINUTE(TIME(14, 30, 0)) → 30

MONTH

MONTH(serial_number)

Returns the month (1–12) of a date.

=MONTH(DATE(2026, 7, 7)) → 7

NETWORKDAYS

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

NOW()

Returns the current date and time.

=NOW() → 2026-07-07 14:30:00

SECOND

SECOND(serial_number)

Returns the second (0–59) of a time value.

=SECOND(TIME(14, 30, 15)) → 15

TIME

TIME(hour, minute, second)

Returns the decimal time value for the given hour, minute and second.

=TIME(14, 30, 0) → 14:30:00

TIMEVALUE

TIMEVALUE(time_text)

Converts a time stored as text into a decimal time value.

=TIMEVALUE("14:30:00") → 14:30:00

TODAY

TODAY()

Returns the current date.

=TODAY() → 2026-07-07

WEEKDAY

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

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

YEAR(serial_number)

Returns the year of a date.

=YEAR(DATE(2026, 7, 7)) → 2026

YEARFRAC

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

Logical & Conditional (17)

IF

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

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

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

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

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

FALSE()

Returns the logical value FALSE.

=FALSE() → FALSE

NOT

NOT(logical)

Reverses the logical value of its single argument.

=NOT(TRUE()) → FALSE

OR

OR(logical1, [logical2], ...)

Returns TRUE if any one of the logical arguments is TRUE.

=OR(A1>10, B1>10) → TRUE

TRUE

TRUE()

Returns the logical value TRUE.

=TRUE() → TRUE

XOR

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

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

COUNTIF(range, criteria)

Counts the cells in the range that meet the given criteria.

=COUNTIF(A1:A10, ">10") → 3

SUMIF

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

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

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

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

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

Lookup, Reference & Information (26)

ADDRESS

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

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

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

COLUMNS(array)

Returns the number of columns spanned by a reference or array.

=COLUMNS(A1:C1) → 3

ROW

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

ROWS(array)

Returns the number of rows spanned by a reference or array.

=ROWS(A1:A9) → 9

XLOOKUP

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

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

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

ISBLANK(value)

Returns TRUE if value refers to an empty cell, otherwise FALSE.

=ISBLANK(A1) → TRUE

ISERR

ISERR(value)

Returns TRUE if value is any error other than #N/A, otherwise FALSE.

=ISERR(1/0) → TRUE

ISERROR

ISERROR(value)

Returns TRUE if value is any error, including #N/A, otherwise FALSE.

=ISERROR(1/0) → TRUE

ISEVEN

ISEVEN(number)

Returns TRUE if number, truncated toward zero, is even.

=ISEVEN(4) → TRUE

ISFORMULA

ISFORMULA(reference)

Returns TRUE if the referenced cell contains a formula, otherwise FALSE.

=ISFORMULA(A1) → TRUE

ISLOGICAL

ISLOGICAL(value)

Returns TRUE if value is a logical (boolean) value, otherwise FALSE.

=ISLOGICAL(TRUE) → TRUE

ISNA

ISNA(value)

Returns TRUE if value is the #N/A error, otherwise FALSE.

=ISNA(NA()) → TRUE

ISNONTEXT

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

ISNUMBER(value)

Returns TRUE if value is a number, otherwise FALSE.

=ISNUMBER(5) → TRUE

ISODD

ISODD(number)

Returns TRUE if number, truncated toward zero, is odd.

=ISODD(3) → TRUE

ISREF

ISREF(value)

Returns TRUE if value is a cell reference, otherwise FALSE.

=ISREF(A1) → TRUE

ISTEXT

ISTEXT(value)

Returns TRUE if value is text, otherwise FALSE.

=ISTEXT("hi") → TRUE

N

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

NA()

Returns the #N/A error value.

=NA() → #N/A

SHEET

SHEET([value])

Returns the sheet number of a referenced cell, or of the current sheet when no argument is given.

=SHEET(A1) → 1

SHEETS

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

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.

No functions match your search.