# List of differences with other spreadsheets

See a full list of differences between HyperFormula, Microsoft Excel, and Google Sheets.

Contents:

# General functionalities

Functionality Examples HyperFormula Google Sheets Microsoft Excel
Dependency collection A1:=IF(FALSE(), A1, 0)

ISREF(A1)
Dependencies are collected during the parsing phase, which finds cycles that wouldn't appear in the evaluation.

CYCLE error for both examples.
Dependencies are collected during evaluation.

0 for both examples.
Same as Google Sheets.
Named expressions and named ranges SALARY:=$A$10 COST:=10*$B$5+100
PROFIT:=SALARY-COST
A1:=SALARY-COST
Only absolute addresses are allowed
(e.g., SALARY:= $A$10).

Named expressions can be global or scoped to one sheet only.

They can contain other named expressions.
Named expressions are not available.

Named ranges can be used to create aliases for addresses and ranges.
Named ranges and scoped named expressions are available.
Named expression names ProductPrice1:=42 A name must be distinctive from a cell reference (case-insensitive), so ProductPrice1 is invalid. See complete naming rules. A name that is a valid cell reference is allowed if the column address is at least 4-letter long, so ProductPrice1 is valid. A name that is a valid cell reference is allowed if the column address is at least 4-letter long, so ProductPrice1 is valid.
Applying a scalar value to a function taking range COLUMNS(A1) CellRangeExpected error. Treats the element as length-1 range. Returns 1 for the example. Same as Google Sheets.
Coercion of explicit arguments VARP(2, 3, 4, TRUE(), FALSE(), "1",) 1.9592, based on the behavior of Microsoft Excel. GoogleSheets implementation is not consistent with the standard (see also VAR.S, STDEV.P, and STDEV.S function.) 1.9592
Ranges created with : A1:A2

A$1:$A$2

A:C

1:2

Sheet1!A1:A2
Allowed ranges consist of two addresses (A1:B5), columns (A:C) or rows (3:5).
They cannot be mixed or contain named expressions.
Everything allowed. Same as Google Sheets.
Formatting inside the TEXT function TEXT(A1,"dd-mm-yy")

TEXT(A1,"###.###”)
Not all formatting options are supported,
e.g., only some date formatting options: (hh, mm, ss, am, pm, a, p, dd, yy, and yyyy).

No currency formatting inside the TEXT function.
A wide variety of options for string formatting is supported. Same as Google Sheets.
Cell references inside inline arrays ={A1, A2} The array's value is calculated but not updated when the cells' values change. The array's value is calculated and updated when the cells' values change. ERROR: invalid array
SPLIT function =SPLIT("Lorem ipsum dolor", 0) This function works differently from Google Sheets version but should be sufficient to achieve the same functionality in most scenarios. Read SPLIT function description on the Built-in Functions page. Different syntax and return value. No such function.
DATEVALUE function =DATEVALUE("25/02/1991") Type of the returned value: CellValueDetailedType.NUMBER_DATE (compliant with the OpenDocument (opens new window) standard) Cell auto-formatted as regular number Cell auto-formatted as regular number
TIMEVALUE function =TIMEVALUE("14:31") Type of the returned value: CellValueDetailedType.NUMBER_TIME (compliant with the OpenDocument (opens new window) standard) Cell auto-formatted as regular number Cell auto-formatted as regular number
EDATE function =EDATE(DATE(2019, 7, 31), 1) Type of the returned value: CellValueDetailedType.NUMBER_DATE. This is non-compliant with the OpenDocument (opens new window) standard, which defines the return type as a Number, while describing it as a Date serial number through the function summary. Cell auto-formatted as date Cell auto-formatted as regular number
EOMONTH function =EOMONTH(DATE(2019, 7, 31), 1) Type of the returned value: CellValueDetailedType.NUMBER_DATE. This is non-compliant with the OpenDocument (opens new window) standard, which defines the return type as a Number, while describing it as a Date serial number through the function summary. Cell auto-formatted as date Cell auto-formatted as regular number

# Built-in functions

Some built-in functions are implemented differently than in Google Sheets or Microsoft Excel.

To remove the differences, create custom implementations of those functions.

Function Example HyperFormula Google Sheets Microsoft Excel
TBILLEQ =TBILLEQ(0, 180, 1.9) 38.5278 NUM NUM
TBILLEQ =TBILLEQ(0, 180, 2) 0.0000 NUM 0.0000
TBILLEQ =TBILLEQ("1/2/2000", "31/1/2001", 0.1) 0.1128 VALUE VALUE
TBILLEQ =TBILLEQ(0, 360, 0.1) 0.1127 0.1097 0.1097
TBILLEQ =TBILLEQ(0, 365, 0.1) 0.1128 0.1098 0.1098
GCD =GCD(1000000000000000000.0) NUM 1E+18 NUM
COMBIN =COMBIN(1030, 0) NUM NUM 1.0000
RRI =RRI(1, -1, -1) 0.0000 NUM 0.0000
DAYS =DAYS(-1, 0) NUM -1.0000 NUM
DAYS =DAYS(0, -1) NUM 1.0000 NUM
DATEDIF =DATEDIF(-1, 0, "Y") NUM 0.0000 NUM
RATE =RATE(12, -100, 400, 0, 1) -1.0000 NUM NUM
PV =PV(-1, 0, 100, 400) NUM -400 NUM
LCMP =LCM(1000000, 1000001, 1000002, 1000003) NUM 5.00003E+23 NUM
TBILLPRICE =TBILLPRICE(0, 180, 1.9) 5.0000 NUM 5.0000
TBILLPRICE =TBILLPRICE(0, 180, 2) 0.0000 NUM 0.0000
NPV =NPV(1, TRUE(), 1) 0.7500 0.5000 0.7500
NPV =NPV(1,B1) where B1 = true 0.5000 0.0000 0.0000
POISSON.DIST =POISSON.DIST(-0.01, 0, FALSE()) NUM 1.0000 NUM
POISSON.DIST =POISSON.DIST(0, -0.01, FALSE()) NUM NUM 1.0101
DB =DB(1000000, 100000, 6, 7, 7) 15845.1000 NUM 15845.0985
BETA.DIST =BETA.DIST(1, 2, 3) N/A 1.0000 NUM
BETA.DIST =BETA.DIST(0, 1, 1, FALSE()) NUM 0.0000 NUM
BETA.DIST =BETA.DIST(0.6, 1, 1, FALSE(), 0.6, 0.7) NUM 0.0000 0.0000
BETA.DIST =BETA.DIST(0.7, 1, 1, FALSE(), 0.6, 0.7) NUM 0.0000 0.0000
GAMMA =GAMMA(-2.5) -0.9453 NUM -0.9453
BINOM.DIST =BINOM.DIST(0.5, 0.4, 1, FALSE()) N/A NUM 1.0000
NEGBINOM.DIST =NEGBINOM.DIST(0, 1, 0, FALSE()) 0.0000 N/A NUM
NEGBINOM.DIST =NEGBINOM.DIST(0, 1, 1, FALSE()) 1.0000 N/A NUM
T.INV =T.INV(0, 1) NUM NUM DIV/0
BETA.INV =BETA.INV(1, 1, 1) 1.0000 1.0000 NUM
WEIBULL.DIST =WEIBULL.DIST(0, 1, 1, FALSE()) 1.0000 1.0000 0.0000
HYPGEOM.DIST =HYPGEOM.DIST(12.1, 12, 20, 40, TRUE()) NUM N/A 1.0000
HYPGEOM.DIST =HYPGEOM.DIST(12.1, 20, 12, 40, TRUE()) NUM N/A 1.0000
HYPGEOM.DIST =HYPGEOM.DIST(1, 2, 3, 4) N/A 0.5000 NUM
HYPGEOM.DIST =HYPGEOM.DIST(4, 12, 20, 40, TRUE()) 0.1504 N/A 0.1504
TDIST =TDIST(0, 1, 1.5) NUM 0.5000 0.5000
T.INV.2T =T.INV.2T(0, 1) NUM NUM DIV/0
T.DIST =T.DIST(1, 0.9, FALSE()) NUM NUM DIV/0
AVEDEV =AVEDEV(TRUE(), FALSE()) 0.4444 0.0000 0.4444
LARGE =LARGE(TRUE(), 1) NUM NUM 1.0000
COUNTA =COUNTA(1,) 2.0000 1.0000 2.0000
XNPV =XNPV(-0.9, A2:D2, A3:D3)
where 2nd and 3rd row: 1, 2, 3, 4
10.1272 10.12716959 NUM
SKEW =SKEW(TRUE(), FALSE()) 1.7321 DIV/0 1.7321
HARMEAN =HARMEAN(TRUE(), "4") 1.6000 4.0000 1.6000
GEOMEAN =GEOMEAN(TRUE(), "4") 2.0000 4.0000 2.0000
CHISQ.TEST =CHISQ.TEST(A1:C2, A1:F1) N/A N/A DIV/0
BINOM.INV =BINOM.INV(1, 0.8, 0.2) 0.0000 1.0000 1.0000
BINOM.INV =BINOM.INV(-0.001, 0.5, 0.5) NUM 0.0000 NUM
BINOM.INV =BINOM.INV(10, 0, 0.5) 0.0000 NUM NUM
BINOM.INV =BINOM.INV(10, 1, 0.5) 10.0000 NUM NUM
DEVSQ =DEVSQ(A2, A3) 0.0000 0.0000 NUM
NORMSDIST =NORMSDIST(0, TRUE()) 0.5 Wrong number Wrong number
ADDRESS =ADDRESS(1,1,4, TRUE(), "") !A1 ''!A1 !A1