V4 V5

There are 122 built-in functions. Names and arguments follow Excel.

An unregistered function name produces #NAME?. You can add your own (Custom Functions).

Math and trigonometry

BasicABS SIGN INT TRUNC MOD POWER EXP SQRT PI
LogarithmsLN LOG LOG10
RoundingROUND ROUNDUP ROUNDDOWN CEILING FLOOR MROUND
TrigonometrySIN COS TAN ASIN ACOS ATAN ATAN2 DEGREES RADIANS
AggregationSUM SUMIF SUMIFS SUMPRODUCT SUMSQ PRODUCT
RandomRAND RANDBETWEEN

Statistics

Central tendencyAVERAGE AVERAGEIF AVERAGEIFS MEDIAN MAX MIN
CountingCOUNT COUNTA COUNTBLANK COUNTIF COUNTIFS
RankLARGE SMALL RANK
DispersionSTDEV STDEVP VAR VARP

Logic

IF IFS IFERROR IFNA AND OR NOT XOR SWITCH TRUE FALSE

Text

ExtractionLEFT RIGHT MID LEN
SearchingFIND SEARCH EXACT
ConversionUPPER LOWER PROPER TRIM VALUE TEXT N
Joining and replacingCONCAT CONCATENATE TEXTJOIN REPLACE SUBSTITUTE REPT
Character codesCHAR CODE

FIND is case-sensitive and SEARCH is not (as in Excel).

Information

ISBLANK ISERR ISERROR ISNA ISNUMBER ISTEXT ISNONTEXT ISLOGICAL ISEVEN ISODD NA

Lookup and reference

VLOOKUP HLOOKUP INDEX MATCH OFFSET CHOOSE ROW ROWS COLUMN COLUMNS

Functions that return a reference — ROW, COLUMN, OFFSET and the like — read their arguments’ syntax tree directly, evaluating lazily. That is what lets OFFSET(A1, 1, 0) return a reference itself.

Date and time

NowTODAY NOW
ConstructingDATE TIME DATEVALUE
ExtractingYEAR MONTH DAY HOUR MINUTE SECOND WEEKDAY
ArithmeticDAYS EDATE EOMONTH

Dates are held as OLE Automation serial numbers. Both 1900-based and 1904-based xlsx files can be read.

Criteria strings (the SUMIF family)

SUMIF, COUNTIF, AVERAGEIF and their multi-criteria versions accept the same criteria strings as Excel.

CriteriaMeaning
">100"greater than 100
"<=0"0 or less
"<>"not empty
"apple"exact match (case-insensitive)
"ap*"wildcards (* is zero or more characters, ? is exactly one)

Error propagation

When any argument is an error, that error is generally what comes back. The exceptions are IFERROR, IFNA, ISERROR, ISERR and ISNA, whose job is to receive one.

Differences from Excel

  • Localized function names are not supported. Japanese names such as 合計 do not work
  • JIS / ASC / DBCS / PHONETIC are not implemented. PHONETIC presupposes a way to attach furigana to a cell, so it is not implemented on its own
  • Dynamic-array functions are not implementedFILTER SORT UNIQUE SEQUENCE LET LAMBDA

Listing what is registered

foreach (string name in unvell.ReoGrid.Core.Formula.FunctionRegistry.Default.Names)
	Console.WriteLine(name);

That list is always authoritative. Where it disagrees with this page, the implementation is right.

Was this article helpful?