Help Center · Reference
241 functions, with signatures and examples.
Start a cell with = to enter a formula — =SUM(A1:A10), or =VLOOKUP(A1, Prices!A:C, 3, FALSE). References reach another sheet by name, so a formula can compute across your relations. The same reference and a live “try a formula” box are in every sheet under Data → Functions & formula help.
Math
SUM(number1, …)Adds all the numbers in the arguments and ranges.
=SUM(A1:A10)SUBTOTAL(func, range, …)Aggregates a range by function number: 1=AVERAGE, 2=COUNT, 3=COUNTA, 4=MAX, 5=MIN, 6=PRODUCT, 9=SUM.
=SUBTOTAL(9, A1:A10)PRODUCT(number1, …)Multiplies all the numbers together.
=PRODUCT(A1:A3)SUMSQ(number1, …)The sum of the squares of the numbers.
=SUMSQ(3, 4)SUMPRODUCT(array1, array2, …)Multiplies the arrays element-by-element and sums the results.
=SUMPRODUCT(A1:A3, B1:B3)ABS(number)The absolute value (drops the sign).
=ABS(-4)CONVERT(number, from_unit, to_unit)Converts a number between units of the same kind — temperature (C/F/K/Rank/Reau), length, mass, time, volume, area, speed, pressure, energy, power, force and data. Metric prefixes work (km, mg, kJ). Units that measure different things give #N/A.
=CONVERT(100, "C", "F")ROUND(number, digits)Rounds to a number of decimal places (half away from zero).
=ROUND(3.14159, 2)ROUNDUP(number, digits)Rounds away from zero to the given decimals.
=ROUNDUP(2.1, 0)ROUNDDOWN(number, digits)Rounds toward zero to the given decimals.
=ROUNDDOWN(2.9, 0)INT(number)Rounds down to the nearest integer.
=INT(4.7)QUOTIENT(numerator, denominator)The integer part of a division.
=QUOTIENT(7, 2)EVEN(number)Rounds away from zero to the next even integer.
=EVEN(3)ODD(number)Rounds away from zero to the next odd integer.
=ODD(2)FLOOR(number, significance)Rounds down to the nearest multiple of significance.
=FLOOR(23, 5)CEILING(number, significance)Rounds up to the nearest multiple of significance.
=CEILING(23, 5)MOD(number, divisor)The remainder after division.
=MOD(10, 3)POWER(base, exponent)Raises a number to a power (same as ^).
=POWER(2, 10)SQRT(number)The square root of a non-negative number.
=SQRT(144)EXP(number)Euler's number e raised to a power.
=EXP(1)LN(number)The natural logarithm (base e) of a positive number.
=LN(2.718281828)LOG10(number)The base-10 logarithm of a positive number.
=LOG10(1000)LOG(number, [base])The logarithm of a positive number to the given base (default 10).
=LOG(8, 2)TRUNC(number, [digits])Truncates toward zero to the given decimals (default 0).
=TRUNC(3.99)PI()The mathematical constant π (3.14159…).
=PI()SIGN(number)-1, 0, or 1 depending on the number's sign.
=SIGN(-8)BITAND(number1, number2)Bitwise AND of two non-negative integers.
=BITAND(5, 3)BITOR(number1, number2)Bitwise OR of two non-negative integers.
=BITOR(5, 3)BITXOR(number1, number2)Bitwise XOR of two non-negative integers.
=BITXOR(5, 3)BITLSHIFT(number, shift)Shifts a number left by shift bits.
=BITLSHIFT(1, 4)BITRSHIFT(number, shift)Shifts a number right by shift bits.
=BITRSHIFT(16, 2)DEC2BIN(number, [places])Converts a decimal number to binary text.
=DEC2BIN(9)DEC2OCT(number, [places])Converts a decimal number to octal text.
=DEC2OCT(8)DEC2HEX(number, [places])Converts a decimal number to hexadecimal text.
=DEC2HEX(255)BIN2DEC(text)Converts binary text to a decimal number.
=BIN2DEC("1001")OCT2DEC(text)Converts octal text to a decimal number.
=OCT2DEC("17")HEX2DEC(text)Converts hexadecimal text to a decimal number.
=HEX2DEC("FF")DELTA(number1, [number2])1 if the two numbers are equal, otherwise 0.
=DELTA(5, 5)GESTEP(number, [step])1 if number ≥ step, otherwise 0.
=GESTEP(5, 4)BASE(number, radix, [min_length])Converts a number to text in a given base (2–36).
=BASE(255, 16)DECIMAL(text, radix)Converts text in a given base (2–36) to a decimal number.
=DECIMAL("FF", 16)ROMAN(number)Converts a number (1–3999) to a Roman numeral.
=ROMAN(1994)ARABIC(text)Converts a Roman numeral to a number.
=ARABIC("MCMXCIV")GCD(number1, …)The greatest common divisor of the integers.
=GCD(24, 36)LCM(number1, …)The least common multiple of the integers.
=LCM(4, 6)MROUND(number, multiple)Rounds to the nearest multiple of the given number.
=MROUND(17, 5)FACT(number)The factorial of a non-negative whole number (n!).
=FACT(5)COMBIN(n, k)The number of combinations of k items chosen from n (order doesn't matter).
=COMBIN(52, 5)PERMUT(n, k)The number of permutations of k items chosen from n (order matters).
=PERMUT(10, 3)SIN(angle)The sine of an angle given in radians.
=SIN(RADIANS(30))COS(angle)The cosine of an angle given in radians.
=COS(0)TAN(angle)The tangent of an angle given in radians.
=TAN(RADIANS(45))ASIN(number)The arcsine (in radians) of a number between -1 and 1.
=ASIN(1)ACOS(number)The arccosine (in radians) of a number between -1 and 1.
=ACOS(0)ATAN(number)The arctangent (in radians) of a number.
=ATAN(1)ATAN2(x, y)The arctangent (in radians) of the point (x, y).
=ATAN2(1, 1)SINH(number)The hyperbolic sine of a number.
=SINH(1)COSH(number)The hyperbolic cosine of a number.
=COSH(1)TANH(number)The hyperbolic tangent of a number.
=TANH(1)SEC(angle)The secant of an angle (1/COS), in radians.
=SEC(0)CSC(angle)The cosecant of an angle (1/SIN), in radians.
=CSC(PI()/2)COT(angle)The cotangent of an angle (1/TAN), in radians.
=COT(PI()/4)SECH(number)The hyperbolic secant of a number.
=SECH(0)CSCH(number)The hyperbolic cosecant of a number.
=CSCH(1)COTH(number)The hyperbolic cotangent of a number.
=COTH(1)ASINH(number)The inverse hyperbolic sine of a number.
=ASINH(1)ACOSH(number)The inverse hyperbolic cosine of a number ≥ 1.
=ACOSH(1)ATANH(number)The inverse hyperbolic tangent of a number between −1 and 1.
=ATANH(0.5)DEGREES(radians)Converts an angle from radians to degrees.
=DEGREES(PI())RADIANS(degrees)Converts an angle from degrees to radians.
=RADIANS(180)Statistical
AVERAGE(number1, …)The arithmetic mean of the numbers (AVG is an alias).
=AVERAGE(A1:A10)GEOMEAN(number1, …)The geometric mean (all values must be positive).
=GEOMEAN(A1:A10)HARMEAN(number1, …)The harmonic mean (all values must be positive).
=HARMEAN(A1:A10)DEVSQ(number1, …)The sum of squared deviations from the mean.
=DEVSQ(A1:A10)AVEDEV(number1, …)The average of absolute deviations from the mean.
=AVEDEV(A1:A10)CORREL(array1, array2)The correlation coefficient between two equal-length ranges.
=CORREL(A1:A10, B1:B10)PEARSON(array1, array2)The Pearson correlation coefficient (same as CORREL).
=PEARSON(A1:A10, B1:B10)SLOPE(known_ys, known_xs)The slope of the linear-regression line through the points.
=SLOPE(B1:B10, A1:A10)INTERCEPT(known_ys, known_xs)The y-intercept of the linear-regression line.
=INTERCEPT(B1:B10, A1:A10)RSQ(known_ys, known_xs)The R² (coefficient of determination) of the regression.
=RSQ(B1:B10, A1:A10)STEYX(known_ys, known_xs)The standard error of the predicted y for each x.
=STEYX(B1:B10, A1:A10)FORECAST(x, known_ys, known_xs)Predicts a y value for x using linear regression.
=FORECAST(6, B1:B10, A1:A10)MIN(number1, …)The smallest number.
=MIN(A1:A10)MAX(number1, …)The largest number.
=MAX(A1:A10)MEDIAN(number1, …)The middle value.
=MEDIAN(A1:A10)COUNT(value1, …)Counts how many values are numbers.
=COUNT(A1:A10)COUNTA(value1, …)Counts how many values are non-empty.
=COUNTA(A1:A10)COUNTUNIQUE(value1, …)Counts the distinct non-empty values (case-insensitive for text).
=COUNTUNIQUE(A1:A20)SUMIF(range, criteria, [sum_range])Sums cells that meet a condition.
=SUMIF(A1:A9, ">10")SUMIFS(sum_range, range1, crit1, …)Sums cells meeting several conditions.
=SUMIFS(C:C, A:A, "East", B:B, ">10")COUNTIF(range, criteria)Counts cells that meet a condition.
=COUNTIF(A1:A9, "Done")COUNTIFS(range1, crit1, …)Counts cells meeting several conditions.
=COUNTIFS(A:A, "East", B:B, ">10")AVERAGEIF(range, criteria, [avg_range])Averages cells that meet a condition.
=AVERAGEIF(A1:A9, ">0")AVERAGEIFS(avg_range, range1, crit1, …)Averages cells meeting several conditions.
=AVERAGEIFS(C:C, A:A, "East")MAXIFS(max_range, range1, crit1, …)The largest value among cells meeting several conditions.
=MAXIFS(C:C, A:A, "East")MINIFS(min_range, range1, crit1, …)The smallest value among cells meeting several conditions.
=MINIFS(C:C, A:A, "East")STDEV(number1, …)Standard deviation of a sample.
=STDEV(A1:A20)STDEVP(number1, …)Standard deviation of a whole population.
=STDEVP(A1:A20)VAR(number1, …)Variance of a sample.
=VAR(A1:A20)VARP(number1, …)Variance of a whole population.
=VARP(A1:A20)MODE(number1, …)The most frequently occurring number.
=MODE(A1:A20)RANK(number, range, [ascending])The rank of a number within a range (largest is #1 by default).
=RANK(A1, A1:A20)LARGE(range, k)The k-th largest value.
=LARGE(A1:A20, 2)SMALL(range, k)The k-th smallest value.
=SMALL(A1:A20, 2)PERCENTILE(range, k)The value at the k-th percentile (k from 0 to 1).
=PERCENTILE(A1:A20, 0.9)QUARTILE(range, q)The q-th quartile (q from 0 to 4).
=QUARTILE(A1:A20, 3)COUNTBLANK(range)Counts how many cells are empty.
=COUNTBLANK(A1:A20)Text
CONVERTTEXT(number, from_unit, units, [decimals])Expresses a value across several units of the same kind as text — 3 yd 2 ft 3 in, 2 cups 3 oz, 1 hr 30 min. List the units in any order. A 4th argument of 2 gives two decimals on the smallest unit; "1/16" renders it as a fraction.
=CONVERTTEXT(3.75, "yd", "yd ft in")CONVERTVALUE(text, to_unit)Reads a compound measurement back into a number — "5 ft 7 in" into inches — so an imported column of labels becomes something you can total.
=CONVERTVALUE("3 yd 2 ft 3 in", "yd")REPT(text, count)Repeats text a given number of times.
=REPT("-", 10)CONCAT(text1, …)Joins text together (CONCATENATE is an alias).
=CONCAT(A1, " ", B1)TEXTJOIN(delimiter, ignore_empty, text1, …)Joins text with a delimiter, optionally skipping blanks.
=TEXTJOIN(", ", TRUE, A1:A5)LEN(text)The number of characters in the text.
=LEN(A1)LEFT(text, [count])The leftmost characters.
=LEFT(A1, 3)RIGHT(text, [count])The rightmost characters.
=RIGHT(A1, 3)MID(text, start, length)Characters from the middle, from a start position.
=MID(A1, 2, 4)UPPER(text)Converts text to upper case.
=UPPER(A1)LOWER(text)Converts text to lower case.
=LOWER(A1)PROPER(text)Capitalises the first letter of each word.
=PROPER(A1)TRIM(text)Removes extra spaces.
=TRIM(A1)SUBSTITUTE(text, old, new, [which])Replaces occurrences of old text with new text.
=SUBSTITUTE(A1, "-", "/")REGEXMATCH(text, pattern)TRUE if the text matches the regular expression.
=REGEXMATCH(A1, "@")REGEXEXTRACT(text, pattern)The first match (or first capture group) of a regular expression.
=REGEXEXTRACT(A1, "\d+")REGEXREPLACE(text, pattern, replacement)Replaces every regex match with the replacement.
=REGEXREPLACE(A1, "\D", "")REPLACE(text, start, count, new)Replaces characters by position.
=REPLACE(A1, 1, 3, "XXX")FIND(find_text, within, [start])Position of text within text (case-sensitive).
=FIND("@", A1)SEARCH(find_text, within, [start])Position of text (case-insensitive, wildcards).
=SEARCH("st", A1)TEXT(value, format)Formats a number or date using a format mask.
=TEXT(A1, "#,##0.00")VALUE(text)Converts text that looks like a number into a number.
=VALUE("1,234")NUMBERVALUE(text, [decimal_sep], [group_sep])Converts text to a number using the given separators.
=NUMBERVALUE("1.234,56", ",", ".")TEXTBEFORE(text, delimiter, [instance])The text before the nth occurrence of a delimiter.
=TEXTBEFORE(A1, "@")MASK(text, [keep_last], [mask_char])Hides all but the last few characters — an account or card number shown as ************1234. Keeps 4 by default. Asking to keep more characters than the value holds never reveals it.
=MASK(A1, 4)MASKEMAIL(email, [mask_char])Masks the name part of an address but keeps the first letter and the domain — k*********@example.com. Text that is not an address is masked entirely rather than shown.
=MASKEMAIL(A1)LPAD(text, width, [pad])Pads on the left to a fixed width — invoice numbers as 007. Never truncates: text already at or over the width comes back unchanged.
=LPAD(A1, 5, "0")RPAD(text, width, [pad])Pads on the right to a fixed width, for fixed-column exports and aligned labels.
=RPAD(A1, 12, ".")SENTENCECASE(text)Capitalises the first letter of each sentence and lowers the rest — turns SHOUTING imported copy back into something readable. PROPER capitalises every word instead.
=SENTENCECASE(A1)INITIALS(text, [max])The initials of each word, hyphens included — "mary-jane watson" gives MJW. An optional limit keeps only the first few.
=INITIALS(A1)SHORTEN(text, width, [suffix])Trims text to a width and marks it with an ellipsis. The result fits the width INCLUDING the suffix, so a column never overflows by a character.
=SHORTEN(A1, 40)SLUG(text, [separator])A URL- and filename-safe form: lower case, words joined by hyphens. Accented letters keep their base letter rather than being dropped.
=SLUG(A1)SPLITPART(text, delimiter, index)One piece of a delimited value — the 2nd field of a CSV line, or the surname from "Penland, Kristopher". Counts from 1; a negative index counts from the end, so -1 is the last piece.
=SPLITPART(A1, ",", 2)ORDINAL(number)Writes a number as a rank — 1st, 2nd, 3rd, 11th. Gets the 11/12/13 exceptions right.
=ORDINAL(21)ENCODEURL(text)Escapes text so it is safe inside a web address — spaces, ampersands and accents become %-codes. Use it to build a link from a field.
=CONCAT("https://x.com/s?q=", ENCODEURL(A1))DECODEURL(text)Turns %-codes in a web address back into readable text. A broken escape gives #VALUE rather than the mangled text.
=DECODEURL(A1)WORDCOUNT(text)How many words the text holds. Runs of spaces and line breaks count once.
=WORDCOUNT(A1)LEVENSHTEIN(text1, text2, [match_case])How many single-character edits turn one text into the other — 0 means identical. Case is ignored unless you ask for it. Text longer than 1000 characters gives #VALUE rather than stalling the sheet.
=LEVENSHTEIN(A1, B1)SIMILARITY(text1, text2, [match_case])How alike two texts are, from 0 (nothing in common) to 1 (identical) — the readable form of LEVENSHTEIN, for spotting near-duplicate records.
=IF(SIMILARITY(A1, B1) > 0.9, "likely duplicate", "")SPELLNUMBER(number, [currency], [title_case])States an amount in words, as a contract or cheque does. With a currency word the cents are spelled out and the unit agrees in number; without one you get the banker's "and 56/100" form. Cents are rounded, not truncated.
=SPELLNUMBER(1234.56, "dollar")TEXTAFTER(text, delimiter, [instance])The text after the nth occurrence of a delimiter.
=TEXTAFTER(A1, "@")FIXED(number, [decimals], [no_commas])Formats a number with fixed decimals and thousands separators.
=FIXED(1234.5, 1)DOLLAR(number, [decimals])Formats a number as currency text with a $ sign.
=DOLLAR(1234.5)T(value)Returns the value if it is text, otherwise an empty string.
=T(A1)CHAR(number)The character for a code (1–255).
=CHAR(65)CODE(text)The numeric code of the first character of text.
=CODE("A")UNICHAR(number)The Unicode character for a code point.
=UNICHAR(8364)UNICODE(text)The Unicode code point of the first character of text.
=UNICODE("€")EXACT(text1, text2)TRUE if two text values are exactly equal (case-sensitive).
=EXACT(A1, "Yes")CLEAN(text)Removes non-printable control characters from text.
=CLEAN(A1)Logical
CONTAINS(text, part)TRUE when the text contains the part, ignoring case. The same function the app and automation editors offer, so a rule reads the same wherever you write it.
=CONTAINS(A1, "urgent")STARTSWITH(text, part)TRUE when the text begins with the part, ignoring case.
=STARTSWITH(A1, "INV-")ENDSWITH(text, part)TRUE when the text ends with the part, ignoring case.
=ENDSWITH(A1, ".pdf")COALESCE(value1, value2, …)The first value that is actually filled in. Excel has no equivalent — IFERROR answers a different question — but picking the first of several columns that has a value is constant work in a relational sheet.
=COALESCE(A1, B1, "none")IF(condition, if_true, [if_false])Returns one value if true, another if false.
=IF(A1>10, "High", "Low")IFS(cond1, val1, cond2, val2, …)Returns the value for the first true condition.
=IFS(A1>90, "A", A1>80, "B", TRUE, "C")SWITCH(expr, case1, val1, …, [default])Matches an expression against cases.
=SWITCH(A1, 1, "One", 2, "Two", "Other")AND(logical1, …)TRUE if every argument is true.
=AND(A1>0, B1>0)OR(logical1, …)TRUE if any argument is true.
=OR(A1>0, B1>0)XOR(logical1, …)TRUE if an odd number of arguments are true.
=XOR(A1, B1)NOT(logical)Reverses a true/false value.
=NOT(A1>0)TRUE()The logical value TRUE.
=TRUE()FALSE()The logical value FALSE.
=FALSE()IFERROR(value, value_if_error)Catches any error and returns a fallback.
=IFERROR(A1/B1, 0)IFNA(value, value_if_na)Catches only #N/A (other errors still show).
=IFNA(VLOOKUP(A1, T!A:B, 2, FALSE), "—")ISBLANK(value)TRUE if the value is empty.
=ISBLANK(A1)ISNUMBER(value)TRUE if the value is a number.
=ISNUMBER(A1)ISTEXT(value)TRUE if the value is text.
=ISTEXT(A1)ISNONTEXT(value)TRUE if the value is not text (numbers, booleans, blanks).
=ISNONTEXT(A1)ISLOGICAL(value)TRUE if the value is a boolean (TRUE/FALSE).
=ISLOGICAL(A1)ISEVEN(number)TRUE if the number is even (truncated).
=ISEVEN(A1)ISODD(number)TRUE if the number is odd (truncated).
=ISODD(A1)ISERROR(value)TRUE if the value is any error.
=ISERROR(A1/B1)ISERR(value)TRUE if the value is any error except #N/A.
=ISERR(A1)ISNA(value)TRUE if the value is the #N/A error.
=ISNA(VLOOKUP(A1, T, 2, 0))NA()Returns the #N/A error value.
=NA()N(value)Converts a value to a number (TRUE→1, text→0).
=N(TRUE)TYPE(value)The value's type code: 1 number, 2 text, 4 boolean, 16 error, 64 array.
=TYPE(A1)Lookup
VLOOKUP(lookup, table, col, [exact])Finds a value in the first column and returns a cell from that row.
=VLOOKUP(A1, Prices!A:C, 3, FALSE)HLOOKUP(lookup, table, row, [exact])Finds a value in the first row and returns a cell from that column.
=HLOOKUP(A1, Rates!A1:F2, 2, FALSE)XLOOKUP(lookup, lookup_range, return_range, [if_missing], [mode])Finds a value and returns the matching item from another range.
=XLOOKUP(A1, Prices!A:A, Prices!C:C, "—")INDEX(range, row, [col])The value at a position within a range.
=INDEX(A1:C9, 2, 3)MATCH(lookup, range, [match_type])The position of a value within a range.
=MATCH(A1, B1:B9, 0)CHOOSE(index, value1, …)Picks a value by its 1-based position.
=CHOOSE(2, "A", "B", "C")CHILDROWS(subtable_cell, "child column")The values of one column across every row of the child table a sub-table cell owns. Comes back as a list, so any function that takes a range takes this — SUM, AVERAGE, MAX, COUNTIF, TEXTJOIN. The list holds plain values, and it reads a column exactly as the roll-up editor does: a dropdown, user, people or attachment column arrives as the same text you see in the child row. A date column arrives as its date text, which every function reads except MIN and MAX — those two work on numbers, so for the earliest or latest date in a child column use SUBTABLE instead. A child table with no column of that name contributes nothing rather than breaking the sheet; a child table that has not been loaded gives #N/A, because a total that quietly leaves rows out is worse than one that says it does not know.
=SUM(CHILDROWS(D2, "Hours"))LINKEDROWS(relation_cell, "linked column")The values of one column across every row a relation cell links — all of them, when the cell links more than one. Comes back as a list, so any function that takes a range takes this — SUM, AVERAGE, MAX, COUNTIF, TEXTJOIN. The rows arrive in the order the cell links them, and the list reads a column exactly as the roll-up editor does: a dropdown, user, people or attachment column arrives as the same text you see in the linked row. A date column arrives as its date text, which every function reads except MIN and MAX — those two work on numbers, so for the earliest or latest date across the linked rows use RELATED instead. A link whose row has since been deleted contributes nothing; a linked table with no column of that name contributes nothing rather than breaking the sheet; a linked table that has not been loaded gives #N/A, because a total that quietly leaves rows out is worse than one that says it does not know.
=SUM(LINKEDROWS(B2, "Hours"))RELATED(relation_cell, "linked column", "aggregate")One aggregate across every row a relation cell links, in a single call — the formula spelling of a roll-up column. Wrapping LINKEDROWS gives the same answer on every kind of column but one: MIN(LINKEDROWS(B2, "Due")) is 0 where RELATED(B2, "Due", "min") is the date, because a plain list carries a date only as text and MIN works on numbers. So reach for RELATED when you want the earliest or latest date. The aggregate is sum, count, countFilled, min, max, avg or concat — average and COUNTA are accepted as aliases, and any other name is #VALUE rather than a guess. Note that count means count the NUMBERS and countFilled means count the cells that have anything in them; a roll-up column's "count" is the second of those, so spell it countFilled to match one. A roll-up column set to split a shared row's value between its parents is not reproduced here — RELATED always counts a linked row's value in full.
=RELATED(B2, "Hours", "sum")SUBTABLE(subtable_cell, "child column", "aggregate")One aggregate over a sub-table's child rows, in a single call, answering exactly what the roll-up editor shows for the same column and aggregate — dates, dropdowns, users and people included. Wrapping CHILDROWS gives the same answer on every kind of column but one: MIN(CHILDROWS(D2, "Due")) is 0 where SUBTABLE(D2, "Due", "min") is the date, because a plain list carries a date only as text and MIN works on numbers. So reach for SUBTABLE when you want the earliest or latest date. The aggregate is sum, count, countFilled, min, max, avg or concat — average and COUNTA are accepted as aliases, and any other name is #VALUE rather than a guess. Note that count means count the NUMBERS and countFilled means count the cells that have anything in them — the roll-up editor spells those two out as "count numbers" and "count filled cells", but a formula takes the short names written here.
=SUBTABLE(D2, "Hours", "sum")Date
DAYSBETWEEN(start, end)Whole days from the start date to the end date — positive when the end is later. Note the order is (start, end); DAYS takes (end, start), which is Excel's convention. The same name and order work in app screens and automations.
=DAYSBETWEEN(A1, B1)TODAY()Today's date.
=TODAY()NOW()The current date and time.
=NOW()DATE(year, month, day)Builds a date from parts.
=DATE(2026, 7, 9)DATEVALUE(text)Normalizes a text date (e.g. "1/15/2026") to a standard date.
=DATEVALUE("1/15/2026")TIMEVALUE(text)The time of day of a value as a fraction of a day (0–1).
=TIMEVALUE("2:30 PM")YEAR(date)The year of a date.
=YEAR(A1)MONTH(date)The month (1–12) of a date.
=MONTH(A1)DAY(date)The day of the month.
=DAY(A1)WEEKDAY(date, [type])Day of week. type 1 (default) 1=Sun…7=Sat, type 2 1=Mon…7=Sun, type 3 0=Mon…6=Sun (also 11–17).
=WEEKDAY(A1, 2)DAYS(end, start)The number of days between two dates.
=DAYS(B1, A1)EDATE(date, months)A date a number of months before/after.
=EDATE(A1, 3)EOMONTH(date, months)The last day of the month, offset by months.
=EOMONTH(A1, 0)NETWORKDAYS(start, end, [holidays])Working days between two dates (excludes weekends).
=NETWORKDAYS(A1, B1)WORKDAY(start, days, [holidays])The date a number of working days from start (skips weekends + holidays; negative counts back).
=WORKDAY(A1, 10)YEARFRAC(start, end, [basis])Fraction of a year between dates (basis 0=US 30/360, 1=actual/actual, 2=act/360, 3=act/365, 4=Euro 30/360).
=YEARFRAC(A1, B1, 1)DAYS360(start, end, [european])Days between dates on a 360-day year (12×30-day months); TRUE = European method.
=DAYS360(A1, B1)ISOWEEKNUM(date)ISO-8601 week number (weeks start Monday; week 1 has the year's first Thursday).
=ISOWEEKNUM(A1)HOUR(datetime)The hour (0–23) of a date/time value.
=HOUR(A1)MINUTE(datetime)The minute (0–59) of a date/time value.
=MINUTE(A1)SECOND(datetime)The second (0–59) of a date/time value.
=SECOND(A1)TIME(hour, minute, second)Builds a time (HH:MM:SS); wraps past 24 hours.
=TIME(13, 30, 0)WEEKNUM(date, [type])The week number of the year (type 1 = weeks start Sunday, 2 = Monday).
=WEEKNUM(A1)DATEDIF(start, end, unit)Difference between dates in "Y", "M", "D", "MD", "YM", or "YD".
=DATEDIF(A1, B1, "Y")Financial
PMT(rate, nper, pv, [fv], [type])The periodic payment for a loan/annuity at a constant rate.
=PMT(0.05/12, 60, 20000)FV(rate, nper, pmt, [pv], [type])The future value of an investment with constant payments.
=FV(0.06/12, 120, -100)PV(rate, nper, pmt, [fv], [type])The present value of a series of future payments.
=PV(0.08, 20, 500)NPER(rate, pmt, pv, [fv], [type])The number of periods for an investment/loan.
=NPER(0.08/12, -200, -500, 10000)NPV(rate, value1, …)The net present value of a series of cash flows at a discount rate.
=NPV(0.1, A1:A5)IRR(values, [guess])The internal rate of return for a series of cash flows.
=IRR(A1:A6)XNPV(rate, values, dates)The net present value of cash flows on specific (non-periodic) dates, discounted Actual/365.
=XNPV(0.1, A2:A5, B2:B5)XIRR(values, dates, [guess])The internal rate of return for cash flows on specific (non-periodic) dates.
=XIRR(A2:A5, B2:B5)RATE(nper, pmt, pv, [fv], [type], [guess])The interest rate per period of an annuity.
=RATE(60, -188.71, 10000)IPMT(rate, per, nper, pv, [fv], [type])The interest portion of a loan payment for a given period.
=IPMT(0.1/12, 1, 36, 10000)PPMT(rate, per, nper, pv, [fv], [type])The principal portion of a loan payment for a given period.
=PPMT(0.1/12, 1, 36, 10000)RRI(nper, pv, fv)The equivalent constant interest/growth rate turning pv into fv over nper periods.
=RRI(5, 10000, 15000)PDURATION(rate, pv, fv)The number of periods for an investment to grow from pv to fv at a fixed rate.
=PDURATION(0.05, 10000, 15000)EFFECT(nominal_rate, npery)The effective annual interest rate, given a nominal rate compounded npery times a year.
=EFFECT(0.06, 12)NOMINAL(effect_rate, npery)The nominal annual interest rate, given an effective rate and npery compounding periods.
=NOMINAL(0.0617, 12)SLN(cost, salvage, life)Straight-line depreciation of an asset for one period.
=SLN(10000, 1000, 5)SYD(cost, salvage, life, per)Sum-of-years'-digits depreciation for a period.
=SYD(10000, 1000, 5, 1)DDB(cost, salvage, life, period, [factor])Declining-balance depreciation (double by default) for a period.
=DDB(10000, 1000, 5, 1)DB(cost, salvage, life, period, [month])Fixed-declining-balance depreciation for a period.
=DB(10000, 1000, 5, 1)Info
ISEMAIL(text)TRUE when the text looks like an email address. Deliberately conservative — one @, something either side, a dot in the domain, no spaces — because it is for checking what somebody typed.
=IF(ISEMAIL(A1), "ok", "check this")ISURL(text)TRUE when the text is an absolute http or https link with a real domain. A bare host like example.com is FALSE, and so is anything that is not a web link.
=IF(ISURL(A1), "ok", "not a link")ROWID()This row's stable, immutable backend id — unchanged when rows are inserted, sorted, or moved. Useful for reference codes, relation keys, and audit links.
="TASK-" & ROWID()Where a formula runs out there is scripting — the script reference is here →
Try one against your own data.
Start free, import a sheet, and put a formula in it.