Compatibility
Generated by tools/SharpCell.Conformance from the reference workbooks in tests/corpus (workbooks calculated by Microsoft Excel). Each formula result, and each cell an array formula fills, is recalculated by SharpCell and compared with the value Excel saved: numbers within a relative tolerance of 1e-9 (or the file's own, see tests/corpus/excel/SOURCE.md), errors by kind, text exactly. Random functions are compared by result type only. Exceptions are stated, with their reasons, at the end.
80044 of 80046 cells match Excel (99.997%). 38 of them match within a tolerance stated below, where Excel's own result is only as accurate as its solver.
Functions
467 implemented, 23 with a known deviation, 3 used in the corpus but not implemented. A case is a compared cell whose formula uses the function, so a failing case can be caused by another function in the same formula.
| Function | Status | Cases | Match | % |
|---|---|---|---|---|
| ABS | implemented | 24 | 24 | 100.0% |
| ACCRINT | implemented | 587 | 587 | 100.0% |
| ACCRINTM | implemented | 17 | 17 | 100.0% |
| ACOS | implemented | 51 | 51 | 100.0% |
| ACOSH | implemented | 51 | 51 | 100.0% |
| ACOT | implemented | 52 | 52 | 100.0% |
| ACOTH | implemented | 52 | 52 | 100.0% |
| ADDRESS | implemented | 32 | 32 | 100.0% |
| AGGREGATE | implemented | 26 | 26 | 100.0% |
| AMORDEGRC | implemented | 0 | 0 | – |
| AMORLINC | implemented | 0 | 0 | – |
| AND | implemented | 200 | 200 | 100.0% |
| ARABIC | implemented | 20041 | 20041 | 100.0% |
| AREAS | implemented | 0 | 0 | – |
| ARRAYTOTEXT | implemented | 2 | 2 | 100.0% |
| ASIN | implemented | 51 | 51 | 100.0% |
| ASINH | implemented | 51 | 51 | 100.0% |
| ATAN | implemented | 51 | 51 | 100.0% |
| ATAN2 | implemented | 27 | 27 | 100.0% |
| ATANH | implemented | 51 | 51 | 100.0% |
| AVEDEV | implemented | 1 | 1 | 100.0% |
| AVERAGE | implemented | 32 | 32 | 100.0% |
| AVERAGEA | implemented | 20 | 20 | 100.0% |
| AVERAGEIF | implemented | 54 | 54 | 100.0% |
| AVERAGEIFS | implemented | 50 | 50 | 100.0% |
| BASE | implemented | 40 | 40 | 100.0% |
| BESSELI | implemented | 118 | 118 | 100.0% |
| BESSELJ | known deviation: Accurate to full double precision, while Excel's approximation is off by up to about 5E-7 (BESSELJ(10,1) is 0.0434722 in Excel, 0.0434727 exactly). | 119 | 117 | 98.3% |
| BESSELK | implemented | 119 | 119 | 100.0% |
| BESSELY | implemented | 119 | 119 | 100.0% |
| BETA.DIST | implemented | 70 | 70 | 100.0% |
| BETA.INV | implemented | 72 | 72 | 100.0% |
| BETADIST | implemented | 0 | 0 | – |
| BETAINV | implemented | 0 | 0 | – |
| BIN2DEC | implemented | 63 | 63 | 100.0% |
| BIN2HEX | implemented | 60 | 60 | 100.0% |
| BIN2OCT | implemented | 91 | 91 | 100.0% |
| BINOM.DIST | implemented | 74 | 74 | 100.0% |
| BINOM.DIST.RANGE | implemented | 49 | 49 | 100.0% |
| BINOM.INV | implemented | 37 | 37 | 100.0% |
| BINOMDIST | implemented | 0 | 0 | – |
| BITAND | implemented | 22 | 22 | 100.0% |
| BITLSHIFT | implemented | 46 | 46 | 100.0% |
| BITOR | implemented | 22 | 22 | 100.0% |
| BITRSHIFT | implemented | 46 | 46 | 100.0% |
| BITXOR | implemented | 22 | 22 | 100.0% |
| BYCOL | implemented | 5 | 5 | 100.0% |
| BYROW | implemented | 17 | 17 | 100.0% |
| CEILING | implemented | 1504 | 1504 | 100.0% |
| CEILING.MATH | implemented | 1926 | 1926 | 100.0% |
| CEILING.PRECISE | implemented | 1462 | 1462 | 100.0% |
| CELL | known deviation: Info types that depend on formatting or the file (color, filename, format, parentheses, prefix, protect, width) give #N/A, an omitted reference means the formula's own cell rather than the last changed one, and an address on another sheet has no [workbook] part. | 27 | 27 | 100.0% |
| CHAR | implemented | 257 | 257 | 100.0% |
| CHIDIST | implemented | 0 | 0 | – |
| CHIINV | implemented | 0 | 0 | – |
| CHISQ.DIST | implemented | 3 | 3 | 100.0% |
| CHISQ.DIST.RT | implemented | 3 | 3 | 100.0% |
| CHISQ.INV | implemented | 1 | 1 | 100.0% |
| CHISQ.INV.RT | implemented | 1 | 1 | 100.0% |
| CHISQ.TEST | implemented | 1 | 1 | 100.0% |
| CHITEST | implemented | 0 | 0 | – |
| CHOOSE | implemented | 24 | 24 | 100.0% |
| CHOOSECOLS | implemented | 42 | 42 | 100.0% |
| CHOOSEROWS | implemented | 20 | 20 | 100.0% |
| CLEAN | implemented | 10 | 10 | 100.0% |
| CODE | implemented | 0 | 0 | – |
| COLUMN | implemented | 120 | 120 | 100.0% |
| COLUMNS | implemented | 11 | 11 | 100.0% |
| COMBIN | implemented | 36 | 36 | 100.0% |
| COMBINA | implemented | 36 | 36 | 100.0% |
| COMPLEX | implemented | 26 | 26 | 100.0% |
| CONCAT | implemented | 570 | 570 | 100.0% |
| CONCATENATE | implemented | 12 | 12 | 100.0% |
| CONFIDENCE | implemented | 0 | 0 | – |
| CONFIDENCE.NORM | implemented | 55 | 55 | 100.0% |
| CONFIDENCE.T | implemented | 54 | 54 | 100.0% |
| CONVERT | implemented | 357 | 357 | 100.0% |
| CORREL | implemented | 1 | 1 | 100.0% |
| COS | implemented | 67 | 67 | 100.0% |
| COSH | implemented | 51 | 51 | 100.0% |
| COT | implemented | 47 | 47 | 100.0% |
| COTH | implemented | 54 | 54 | 100.0% |
| COUNT | implemented | 37 | 37 | 100.0% |
| COUNTA | implemented | 47 | 47 | 100.0% |
| COUNTBLANK | implemented | 11 | 11 | 100.0% |
| COUNTIF | implemented | 546 | 546 | 100.0% |
| COUNTIFS | implemented | 280 | 280 | 100.0% |
| COUPDAYBS | implemented | 28 | 28 | 100.0% |
| COUPDAYS | implemented | 28 | 28 | 100.0% |
| COUPDAYSNC | implemented | 28 | 28 | 100.0% |
| COUPNCD | implemented | 28 | 28 | 100.0% |
| COUPNUM | implemented | 28 | 28 | 100.0% |
| COUPPCD | implemented | 28 | 28 | 100.0% |
| COVAR | implemented | 0 | 0 | – |
| COVARIANCE.P | implemented | 36 | 36 | 100.0% |
| COVARIANCE.S | implemented | 36 | 36 | 100.0% |
| CRITBINOM | implemented | 0 | 0 | – |
| CSC | implemented | 47 | 47 | 100.0% |
| CSCH | implemented | 54 | 54 | 100.0% |
| CUMIPMT | implemented | 30 | 30 | 100.0% |
| CUMPRINC | implemented | 30 | 30 | 100.0% |
| DATE | implemented | 2314 | 2314 | 100.0% |
| DATEDIF | implemented | 38 | 38 | 100.0% |
| DATEVALUE | implemented | 65 | 65 | 100.0% |
| DAVERAGE | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 45 | 45 | 100.0% |
| DAY | implemented | 1347 | 1347 | 100.0% |
| DAYS | implemented | 76 | 76 | 100.0% |
| DAYS360 | implemented | 100 | 100 | 100.0% |
| DB | implemented | 40 | 40 | 100.0% |
| DCOUNT | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 48 | 48 | 100.0% |
| DCOUNTA | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 48 | 48 | 100.0% |
| DDB | implemented | 40 | 40 | 100.0% |
| DEC2BIN | implemented | 66 | 66 | 100.0% |
| DEC2HEX | implemented | 33 | 33 | 100.0% |
| DEC2OCT | implemented | 64 | 64 | 100.0% |
| DECIMAL | implemented | 20 | 20 | 100.0% |
| DEGREES | implemented | 22 | 22 | 100.0% |
| DELTA | implemented | 30 | 30 | 100.0% |
| DEVSQ | implemented | 1 | 1 | 100.0% |
| DGET | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 36 | 36 | 100.0% |
| DISC | implemented | 14 | 14 | 100.0% |
| DMAX | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 41 | 41 | 100.0% |
| DMIN | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 41 | 41 | 100.0% |
| DOLLAR | implemented | 0 | 0 | – |
| DOLLARDE | implemented | 18 | 18 | 100.0% |
| DOLLARFR | implemented | 18 | 18 | 100.0% |
| DPRODUCT | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 44 | 44 | 100.0% |
| DROP | implemented | 22 | 22 | 100.0% |
| DSTDEV | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 41 | 41 | 100.0% |
| DSTDEVP | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 40 | 40 | 100.0% |
| DSUM | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 40 | 40 | 100.0% |
| DURATION | implemented | 0 | 0 | – |
| DVAR | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 41 | 41 | 100.0% |
| DVARP | known deviation: A computed criterion (a formula under a name that is not a field) is taken at its value for the first record, not re-evaluated for each record. | 41 | 41 | 100.0% |
| EDATE | implemented | 60 | 60 | 100.0% |
| EFFECT | implemented | 44 | 44 | 100.0% |
| EOMONTH | implemented | 87 | 87 | 100.0% |
| ERF | implemented | 68 | 68 | 100.0% |
| ERF.PRECISE | implemented | 45 | 45 | 100.0% |
| ERFC | implemented | 45 | 45 | 100.0% |
| ERFC.PRECISE | implemented | 45 | 45 | 100.0% |
| ERROR.TYPE | implemented | 13 | 13 | 100.0% |
| EVEN | implemented | 41 | 41 | 100.0% |
| EXACT | implemented | 34 | 34 | 100.0% |
| EXP | implemented | 54 | 54 | 100.0% |
| EXPAND | implemented | 34 | 34 | 100.0% |
| EXPON.DIST | implemented | 57 | 57 | 100.0% |
| EXPONDIST | implemented | 0 | 0 | – |
| F.DIST | implemented | 2 | 2 | 100.0% |
| F.DIST.RT | implemented | 2 | 2 | 100.0% |
| F.INV | implemented | 2 | 2 | 100.0% |
| F.INV.RT | implemented | 2 | 2 | 100.0% |
| F.TEST | implemented | 4 | 4 | 100.0% |
| FACT | implemented | 9 | 9 | 100.0% |
| FACTDOUBLE | implemented | 7 | 7 | 100.0% |
| FALSE | implemented | 1 | 1 | 100.0% |
| FDIST | implemented | 0 | 0 | – |
| FILTER | implemented | 69 | 69 | 100.0% |
| FIND | implemented | 94 | 94 | 100.0% |
| FINDB | implemented | 0 | 0 | – |
| FINV | implemented | 0 | 0 | – |
| FISHER | implemented | 36 | 36 | 100.0% |
| FISHERINV | implemented | 54 | 54 | 100.0% |
| FIXED | implemented | 0 | 0 | – |
| FLOOR | implemented | 1419 | 1419 | 100.0% |
| FLOOR.MATH | implemented | 1966 | 1966 | 100.0% |
| FLOOR.PRECISE | implemented | 1462 | 1462 | 100.0% |
| FORMULATEXT | known deviation: Formulas read from xlsx files are shown in SharpCell's canonical form, without the spaces and line breaks the author typed. | 223 | 223 | 100.0% |
| FREQUENCY | implemented | 21 | 21 | 100.0% |
| FTEST | implemented | 0 | 0 | – |
| FV | implemented | 94 | 94 | 100.0% |
| FVSCHEDULE | implemented | 5 | 5 | 100.0% |
| GAMMA | implemented | 39 | 39 | 100.0% |
| GAMMA.DIST | implemented | 66 | 66 | 100.0% |
| GAMMA.INV | implemented | 74 | 74 | 100.0% |
| GAMMADIST | implemented | 0 | 0 | – |
| GAMMAINV | implemented | 0 | 0 | – |
| GAMMALN | implemented | 56 | 56 | 100.0% |
| GAMMALN.PRECISE | implemented | 56 | 56 | 100.0% |
| GAUSS | implemented | 36 | 36 | 100.0% |
| GCD | implemented | 163 | 163 | 100.0% |
| GEOMEAN | implemented | 0 | 0 | – |
| GESTEP | implemented | 30 | 30 | 100.0% |
| GROUPBY | implemented | 354 | 354 | 100.0% |
| GROWTH | implemented | 19 | 19 | 100.0% |
| HARMEAN | implemented | 1 | 1 | 100.0% |
| HELLO | not implemented | 1 | 1 | 100.0% |
| HEX2BIN | implemented | 64 | 64 | 100.0% |
| HEX2DEC | implemented | 66 | 66 | 100.0% |
| HEX2OCT | implemented | 64 | 64 | 100.0% |
| HLOOKUP | implemented | 58 | 58 | 100.0% |
| HOUR | implemented | 55 | 55 | 100.0% |
| HSTACK | implemented | 49 | 49 | 100.0% |
| HYPGEOM.DIST | implemented | 2 | 2 | 100.0% |
| HYPGEOMDIST | implemented | 0 | 0 | – |
| IF | implemented | 2775 | 2775 | 100.0% |
| IFERROR | implemented | 57 | 57 | 100.0% |
| IFNA | implemented | 9 | 9 | 100.0% |
| IFS | implemented | 50 | 50 | 100.0% |
| IMABS | implemented | 24 | 24 | 100.0% |
| IMAGINARY | implemented | 417 | 417 | 100.0% |
| IMARGUMENT | implemented | 24 | 24 | 100.0% |
| IMCONJUGATE | implemented | 24 | 24 | 100.0% |
| IMCOS | implemented | 48 | 48 | 100.0% |
| IMCOSH | implemented | 52 | 52 | 100.0% |
| IMCOT | implemented | 52 | 52 | 100.0% |
| IMCSC | implemented | 52 | 52 | 100.0% |
| IMCSCH | implemented | 52 | 52 | 100.0% |
| IMDIV | implemented | 10 | 10 | 100.0% |
| IMEXP | implemented | 52 | 52 | 100.0% |
| IMLN | implemented | 52 | 52 | 100.0% |
| IMLOG10 | implemented | 52 | 52 | 100.0% |
| IMLOG2 | implemented | 52 | 52 | 100.0% |
| IMPOWER | implemented | 0 | 0 | – |
| IMPRODUCT | implemented | 8 | 8 | 100.0% |
| IMREAL | implemented | 417 | 417 | 100.0% |
| IMSEC | implemented | 52 | 52 | 100.0% |
| IMSECH | implemented | 52 | 52 | 100.0% |
| IMSIN | implemented | 52 | 52 | 100.0% |
| IMSINH | implemented | 52 | 52 | 100.0% |
| IMSQRT | implemented | 52 | 52 | 100.0% |
| IMSUB | implemented | 8 | 8 | 100.0% |
| IMSUM | implemented | 8 | 8 | 100.0% |
| IMTAN | implemented | 52 | 52 | 100.0% |
| INDEX | implemented | 46 | 46 | 100.0% |
| INDIRECT | implemented | 187 | 187 | 100.0% |
| INFO | known deviation: Describes a fixed environment (Automatic recalculation, release 16.0, system pcdos); "directory" gives #N/A. | 0 | 0 | – |
| INT | implemented | 45 | 45 | 100.0% |
| INTERCEPT | implemented | 1 | 1 | 100.0% |
| INTRATE | implemented | 5 | 5 | 100.0% |
| IPMT | implemented | 60 | 60 | 100.0% |
| IRR | implemented | 91 | 91 | 100.0% |
| ISBLANK | implemented | 15 | 15 | 100.0% |
| ISERR | implemented | 13 | 13 | 100.0% |
| ISERROR | implemented | 23 | 23 | 100.0% |
| ISEVEN | implemented | 22 | 22 | 100.0% |
| ISFORMULA | implemented | 8 | 8 | 100.0% |
| ISLOGICAL | implemented | 13 | 13 | 100.0% |
| ISNA | implemented | 13 | 13 | 100.0% |
| ISNONTEXT | implemented | 13 | 13 | 100.0% |
| ISNUMBER | implemented | 98 | 98 | 100.0% |
| ISO.CEILING | implemented | 1462 | 1462 | 100.0% |
| ISODD | implemented | 22 | 22 | 100.0% |
| ISOMITTED | implemented | 4 | 4 | 100.0% |
| ISOWEEKNUM | implemented | 62 | 62 | 100.0% |
| ISPMT | implemented | 14 | 14 | 100.0% |
| ISREF | implemented | 43 | 43 | 100.0% |
| ISTEXT | implemented | 13 | 13 | 100.0% |
| KURT | implemented | 1 | 1 | 100.0% |
| LAMBDA | implemented | 69 | 69 | 100.0% |
| LARGE | implemented | 24 | 24 | 100.0% |
| LCM | implemented | 163 | 163 | 100.0% |
| LEFT | implemented | 94 | 94 | 100.0% |
| LEFTB | implemented | 0 | 0 | – |
| LEN | implemented | 27 | 27 | 100.0% |
| LENB | implemented | 0 | 0 | – |
| LET | implemented | 1026 | 1026 | 100.0% |
| LINEST | implemented | 16 | 16 | 100.0% |
| LN | implemented | 19 | 19 | 100.0% |
| LOG | implemented | 45 | 45 | 100.0% |
| LOG10 | implemented | 20 | 20 | 100.0% |
| LOGEST | implemented | 16 | 16 | 100.0% |
| LOGINV | implemented | 0 | 0 | – |
| LOGNORM.DIST | implemented | 66 | 66 | 100.0% |
| LOGNORM.INV | implemented | 78 | 78 | 100.0% |
| LOGNORMDIST | implemented | 0 | 0 | – |
| LOOKUP | implemented | 22 | 22 | 100.0% |
| LOWER | implemented | 29 | 29 | 100.0% |
| MAKEARRAY | implemented | 13 | 13 | 100.0% |
| MAP | implemented | 24 | 24 | 100.0% |
| MATCH | implemented | 108 | 108 | 100.0% |
| MAX | implemented | 100 | 100 | 100.0% |
| MAXA | implemented | 2 | 2 | 100.0% |
| MAXIFS | implemented | 51 | 51 | 100.0% |
| MDETERM | implemented | 2 | 2 | 100.0% |
| MDURATION | implemented | 0 | 0 | – |
| MEDIAN | implemented | 1 | 1 | 100.0% |
| MID | implemented | 158 | 158 | 100.0% |
| MIDB | implemented | 0 | 0 | – |
| MIN | implemented | 51 | 51 | 100.0% |
| MINA | implemented | 9 | 9 | 100.0% |
| MINIFS | implemented | 52 | 52 | 100.0% |
| MINUTE | implemented | 55 | 55 | 100.0% |
| MINVERSE | implemented | 13 | 13 | 100.0% |
| MIRR | implemented | 224 | 224 | 100.0% |
| MMULT | implemented | 154 | 154 | 100.0% |
| MOD | implemented | 45 | 45 | 100.0% |
| MODE | implemented | 0 | 0 | – |
| MODE.MULT | implemented | 12 | 12 | 100.0% |
| MODE.SNGL | implemented | 8 | 8 | 100.0% |
| MONTH | implemented | 1077 | 1077 | 100.0% |
| MROUND | implemented | 61 | 61 | 100.0% |
| MULTINOMIAL | implemented | 13 | 13 | 100.0% |
| MUNIT | implemented | 36 | 36 | 100.0% |
| N | implemented | 18 | 18 | 100.0% |
| NA | implemented | 244 | 244 | 100.0% |
| NEGBINOM.DIST | implemented | 78 | 78 | 100.0% |
| NEGBINOMDIST | implemented | 0 | 0 | – |
| NETWORKDAYS | implemented | 76 | 76 | 100.0% |
| NETWORKDAYS.INTL | implemented | 104 | 104 | 100.0% |
| NOMINAL | implemented | 44 | 44 | 100.0% |
| NORM.DIST | implemented | 64 | 64 | 100.0% |
| NORM.INV | implemented | 76 | 76 | 100.0% |
| NORM.S.DIST | implemented | 46 | 46 | 100.0% |
| NORM.S.INV | implemented | 59 | 59 | 100.0% |
| NORMDIST | implemented | 0 | 0 | – |
| NORMINV | implemented | 0 | 0 | – |
| NORMSDIST | implemented | 0 | 0 | – |
| NORMSINV | implemented | 0 | 0 | – |
| NOT | implemented | 8 | 8 | 100.0% |
| NOW | implemented | 12 | 12 | 100.0% |
| NPER | implemented | 120 | 120 | 100.0% |
| NPV | implemented | 63 | 63 | 100.0% |
| NUMBERVALUE | implemented | 1 | 1 | 100.0% |
| OCT2BIN | implemented | 55 | 55 | 100.0% |
| OCT2DEC | implemented | 27 | 27 | 100.0% |
| OCT2HEX | implemented | 54 | 54 | 100.0% |
| ODD | implemented | 41 | 41 | 100.0% |
| ODDFPRICE | implemented | 43 | 43 | 100.0% |
| ODDFYIELD | implemented | 32 | 32 | 100.0% |
| ODDLPRICE | implemented | 9 | 9 | 100.0% |
| ODDLYIELD | implemented | 9 | 9 | 100.0% |
| OFFSET | implemented | 79 | 79 | 100.0% |
| OR | implemented | 121 | 121 | 100.0% |
| PDURATION | implemented | 17 | 17 | 100.0% |
| PEARSON | implemented | 1 | 1 | 100.0% |
| PERCENTILE | implemented | 0 | 0 | – |
| PERCENTILE.EXC | implemented | 16 | 16 | 100.0% |
| PERCENTILE.INC | implemented | 16 | 16 | 100.0% |
| PERCENTOF | implemented | 6 | 6 | 100.0% |
| PERCENTRANK | implemented | 0 | 0 | – |
| PERCENTRANK.EXC | implemented | 9 | 9 | 100.0% |
| PERCENTRANK.INC | implemented | 9 | 9 | 100.0% |
| PERMUT | implemented | 17 | 17 | 100.0% |
| PERMUTATIONA | implemented | 17 | 17 | 100.0% |
| PHI | implemented | 7 | 7 | 100.0% |
| PI | implemented | 110 | 110 | 100.0% |
| PIVOTBY | known deviation: Several functions at once, such as HSTACK(SUM,AVERAGE), give #VALUE! instead of a column for each. | 513 | 513 | 100.0% |
| PMT | implemented | 76 | 76 | 100.0% |
| POISSON | implemented | 0 | 0 | – |
| POISSON.DIST | implemented | 60 | 60 | 100.0% |
| POWER | implemented | 83 | 83 | 100.0% |
| PPMT | implemented | 60 | 60 | 100.0% |
| PRICE | implemented | 15 | 15 | 100.0% |
| PRICEDISC | implemented | 0 | 0 | – |
| PRICEMAT | implemented | 0 | 0 | – |
| PROB | implemented | 27 | 27 | 100.0% |
| PRODUCT | implemented | 59 | 59 | 100.0% |
| PROPER | implemented | 24 | 24 | 100.0% |
| PV | implemented | 168 | 168 | 100.0% |
| QUARTILE | implemented | 0 | 0 | – |
| QUARTILE.EXC | implemented | 9 | 9 | 100.0% |
| QUARTILE.INC | implemented | 9 | 9 | 100.0% |
| QUOTIENT | implemented | 43 | 43 | 100.0% |
| RADIANS | implemented | 23 | 23 | 100.0% |
| RAND | implemented | 0 | 0 | – |
| RANDARRAY | implemented | 18 | 18 | 100.0% |
| RANDBETWEEN | implemented | 0 | 0 | – |
| RANK | implemented | 0 | 0 | – |
| RANK.AVG | implemented | 10 | 10 | 100.0% |
| RANK.EQ | implemented | 10 | 10 | 100.0% |
| RATE | implemented | 38 | 38 | 100.0% |
| RECEIVED | implemented | 0 | 0 | – |
| REDUCE | implemented | 3 | 3 | 100.0% |
| REGEXEXTRACT | known deviation: Uses .NET regular expressions, not PCRE2: \d and \w also match non-ASCII digits and letters, and PCRE-only syntax such as possessive quantifiers is not available. | 3 | 3 | 100.0% |
| REGEXREPLACE | known deviation: Uses .NET regular expressions, not PCRE2: \d and \w also match non-ASCII digits and letters, and PCRE-only syntax such as possessive quantifiers is not available. | 1 | 1 | 100.0% |
| REGEXTEST | known deviation: Uses .NET regular expressions, not PCRE2: \d and \w also match non-ASCII digits and letters, and PCRE-only syntax such as possessive quantifiers is not available. | 1321 | 1321 | 100.0% |
| REPLACE | implemented | 42 | 42 | 100.0% |
| REPLACEB | implemented | 0 | 0 | – |
| REPT | implemented | 41 | 41 | 100.0% |
| RIGHT | implemented | 67 | 67 | 100.0% |
| RIGHTB | implemented | 0 | 0 | – |
| ROMAN | implemented | 20376 | 20376 | 100.0% |
| ROUND | implemented | 47 | 47 | 100.0% |
| ROUNDDOWN | implemented | 44 | 44 | 100.0% |
| ROUNDUP | implemented | 44 | 44 | 100.0% |
| ROW | implemented | 67 | 67 | 100.0% |
| ROWS | implemented | 12 | 12 | 100.0% |
| RRI | implemented | 11 | 11 | 100.0% |
| RSQ | implemented | 1 | 1 | 100.0% |
| SCAN | implemented | 12 | 12 | 100.0% |
| SEARCH | implemented | 54 | 54 | 100.0% |
| SEARCHB | implemented | 0 | 0 | – |
| SEC | implemented | 47 | 47 | 100.0% |
| SECH | implemented | 54 | 54 | 100.0% |
| SECOND | implemented | 55 | 55 | 100.0% |
| SEQUENCE | implemented | 1227 | 1227 | 100.0% |
| SERIESSUM | implemented | 8 | 8 | 100.0% |
| SHEET | implemented | 15 | 15 | 100.0% |
| SHEETS | implemented | 1 | 1 | 100.0% |
| SIGN | implemented | 53 | 53 | 100.0% |
| SIN | implemented | 76 | 76 | 100.0% |
| SINH | implemented | 51 | 51 | 100.0% |
| SKEW | implemented | 1 | 1 | 100.0% |
| SKEW.P | implemented | 1 | 1 | 100.0% |
| SLN | implemented | 21 | 21 | 100.0% |
| SLOPE | implemented | 1 | 1 | 100.0% |
| SMALL | implemented | 18 | 18 | 100.0% |
| SORT | implemented | 180 | 180 | 100.0% |
| SORTBY | implemented | 34 | 34 | 100.0% |
| SQRT | implemented | 74 | 74 | 100.0% |
| SQRTPI | implemented | 12 | 12 | 100.0% |
| STANDARDIZE | implemented | 4 | 4 | 100.0% |
| STDEV | implemented | 0 | 0 | – |
| STDEV.P | implemented | 1 | 1 | 100.0% |
| STDEV.S | implemented | 2 | 2 | 100.0% |
| STDEVA | implemented | 1 | 1 | 100.0% |
| STDEVP | implemented | 0 | 0 | – |
| STDEVPA | implemented | 1 | 1 | 100.0% |
| STEYX | implemented | 1 | 1 | 100.0% |
| SUBSTITUTE | implemented | 36 | 36 | 100.0% |
| SUBTOTAL | implemented | 103 | 103 | 100.0% |
| SUM | implemented | 184 | 184 | 100.0% |
| SUMIF | implemented | 100 | 100 | 100.0% |
| SUMIFS | implemented | 50 | 50 | 100.0% |
| SUMM | not implemented | 2 | 2 | 100.0% |
| SUMPRODUCT | implemented | 69 | 69 | 100.0% |
| SUMSQ | implemented | 43 | 43 | 100.0% |
| SUMX2MY2 | implemented | 3 | 3 | 100.0% |
| SUMX2PY2 | implemented | 1 | 1 | 100.0% |
| SUMXMY2 | implemented | 1 | 1 | 100.0% |
| SWITCH | implemented | 24 | 24 | 100.0% |
| SYD | implemented | 21 | 21 | 100.0% |
| T | implemented | 14 | 14 | 100.0% |
| T.DIST | implemented | 51 | 51 | 100.0% |
| T.DIST.2T | implemented | 43 | 43 | 100.0% |
| T.DIST.RT | implemented | 49 | 49 | 100.0% |
| T.INV | implemented | 73 | 73 | 100.0% |
| T.INV.2T | implemented | 71 | 71 | 100.0% |
| T.TEST | implemented | 9 | 9 | 100.0% |
| TAKE | implemented | 17 | 17 | 100.0% |
| TAN | implemented | 62 | 62 | 100.0% |
| TANH | implemented | 51 | 51 | 100.0% |
| TBILLEQ | implemented | 29 | 29 | 100.0% |
| TBILLPRICE | implemented | 30 | 30 | 100.0% |
| TBILLYIELD | implemented | 30 | 30 | 100.0% |
| TDIST | implemented | 0 | 0 | – |
| TEXT | known deviation: Calendar and era codes (B1, B2, e, g, [DBNum]) are not interpreted, and month names and separators come from the workbook culture, not from [$-xxxx] locale tags. | 533 | 533 | 100.0% |
| TEXTAFTER | implemented | 71 | 71 | 100.0% |
| TEXTBEFORE | implemented | 70 | 70 | 100.0% |
| TEXTJOIN | implemented | 41 | 41 | 100.0% |
| TEXTSPLIT | implemented | 80 | 80 | 100.0% |
| TIME | implemented | 96 | 96 | 100.0% |
| TIMEVALUE | implemented | 58 | 58 | 100.0% |
| TINV | implemented | 0 | 0 | – |
| TOCOL | implemented | 74 | 74 | 100.0% |
| TODAY | implemented | 15 | 15 | 100.0% |
| TOROW | implemented | 0 | 0 | – |
| TRANSPOSE | implemented | 24 | 24 | 100.0% |
| TREND | implemented | 17 | 17 | 100.0% |
| TRIM | implemented | 27 | 27 | 100.0% |
| TRIMMEAN | implemented | 18 | 18 | 100.0% |
| TRIMRANGE | implemented | 17 | 17 | 100.0% |
| TRUE | implemented | 1 | 1 | 100.0% |
| TRUNC | implemented | 61 | 61 | 100.0% |
| TTEST | implemented | 0 | 0 | – |
| TYPE | implemented | 9 | 9 | 100.0% |
| UNICHAR | implemented | 0 | 0 | – |
| UNICODE | implemented | 18 | 18 | 100.0% |
| UNIQUE | implemented | 46 | 46 | 100.0% |
| UPPER | implemented | 163 | 163 | 100.0% |
| VALUE | implemented | 34 | 34 | 100.0% |
| VALUETOTEXT | implemented | 14 | 14 | 100.0% |
| VAR | implemented | 0 | 0 | – |
| VAR.P | implemented | 11 | 11 | 100.0% |
| VAR.S | implemented | 2 | 2 | 100.0% |
| VARA | implemented | 1 | 1 | 100.0% |
| VARP | implemented | 0 | 0 | – |
| VARPA | implemented | 1 | 1 | 100.0% |
| VDB | implemented | 0 | 0 | – |
| VLOOKUP | implemented | 45 | 45 | 100.0% |
| VSTACK | implemented | 2 | 2 | 100.0% |
| WEEKDAY | implemented | 1078 | 1078 | 100.0% |
| WEEKNUM | implemented | 0 | 0 | – |
| WEIBULL | implemented | 0 | 0 | – |
| WEIBULL.DIST | implemented | 2 | 2 | 100.0% |
| WORKDAY | implemented | 69 | 69 | 100.0% |
| WORKDAY.INTL | implemented | 93 | 93 | 100.0% |
| WRAPCOLS | implemented | 19 | 19 | 100.0% |
| WRAPROWS | implemented | 18 | 18 | 100.0% |
| XIRR | implemented | 31 | 31 | 100.0% |
| XLOOKUP | known deviation: Match mode 3 (regular expressions) uses .NET regular expressions, whose syntax differs from Excel's PCRE2 in details. | 438 | 438 | 100.0% |
| XMATCH | known deviation: Match mode 3 (regular expressions) uses .NET regular expressions, whose syntax differs from Excel's PCRE2 in details. | 6 | 6 | 100.0% |
| XNPV | implemented | 33 | 33 | 100.0% |
| XOR | implemented | 116 | 116 | 100.0% |
| XYZ | not implemented | 2 | 2 | 100.0% |
| YEAR | implemented | 75 | 75 | 100.0% |
| YEARFRAC | implemented | 69 | 69 | 100.0% |
| YIELD | implemented | 15 | 15 | 100.0% |
| YIELDDISC | implemented | 0 | 0 | – |
| YIELDMAT | implemented | 0 | 0 | – |
| Z.TEST | implemented | 4 | 4 | 100.0% |
| ZTEST | implemented | 0 | 0 | – |
Files
| File | Cells | Match | % | Note |
|---|---|---|---|---|
| excel-web/filter-mode.xlsx | 13 | 13 | 100.0% | |
| excel-web/function-values.xlsx | 54 | 54 | 100.0% | |
| excel-web/groupby.xlsx | 873 | 873 | 100.0% | |
| excel-web/hidden-rows.xlsx | 20 | 20 | 100.0% | |
| excel-web/number-formats.xlsx | 33 | 33 | 100.0% | |
| excel-web/protection.xlsx | 0 | 0 | – | |
| excel-web/spill-blocked.xlsx | 17 | 17 | 100.0% | |
| excel-web/tables-spike.xlsx | 32 | 32 | 100.0% | |
| excel-web/writer-crossword.xlsx | 7 | 7 | 100.0% | |
| excel-web/writer-event_calendar.xlsx | 983 | 983 | 100.0% | |
| excel-web/writer-gantt_project_tracker.xlsx | 448 | 448 | 100.0% | |
| excel-web/writer-invoice.xlsx | 31 | 31 | 100.0% | |
| excel-web/writer-new.xlsx | 27 | 27 | 100.0% | |
| excel-web/writer-travel_expenses_tracker.xlsx | 46 | 46 | 100.0% | |
| excel-web/writer-weekly_timesheet.xlsx | 53 | 53 | 100.0% | |
| excel-web/writer-wordle.xlsx | 786 | 786 | 100.0% | |
| excel-web/writer-yearly_calendar.xlsx | 606 | 606 | 100.0% | |
| excel/DynamicArrays.xlsx | 43 | 43 | 100.0% | |
| excel/calc_tests/DATABASE/DAVERAGE.xlsx | 4 | 4 | 100.0% | |
| excel/calc_tests/DATABASE/DCOUNT_DCOUNTA_DGET_DPRODUCT.xlsx | 212 | 212 | 100.0% | |
| excel/calc_tests/DATABASE/DMIN_DMAX_DAVERAGE_DSUM.xlsx | 175 | 175 | 100.0% | |
| excel/calc_tests/DATABASE/DVAR_DVARP_DSTDEV_DSTDEVP.xlsx | 175 | 175 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/DATE.xlsx | 64 | 64 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/DATEVALUE.xlsx | 73 | 73 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/DATEVALUE_issue_1379.xlsx | 4 | 4 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/DATEVALUE_issue_1380.xlsx | 1 | 1 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/DATE_DAY_MONTH_YEAR.xlsx | 68 | 68 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/DAYS_DAYS360.xlsx | 277 | 277 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/DAY_MONTH_YEAR.xlsx | 115 | 115 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/EDATE.xlsx | 83 | 83 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/EOMONTH.xlsx | 105 | 105 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/NETWORKDAYS_NETWORKDAYS.INTL.xlsx | 286 | 286 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/NOW_TODAY.xlsx | 3 | 3 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/TIMEVALUE.xlsx | 68 | 68 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/TIMEVALUE_issue_1402.xlsx | 1 | 1 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/TIME_HOUR_MINUTE_SECOND.xlsx | 252 | 252 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/WORKDAY_WORKDAY.INTL.xlsx | 213 | 213 | 100.0% | |
| excel/calc_tests/DATE_AND_TIME/YEARFRAC_DATEDIF.xlsx | 197 | 197 | 100.0% | |
| excel/calc_tests/ENGINEERING/BESSEL.xlsx | 476 | 474 | 99.6% | |
| excel/calc_tests/ENGINEERING/BITs.xlsx | 164 | 164 | 100.0% | |
| excel/calc_tests/ENGINEERING/COMPLEXs.xlsx | 958 | 958 | 100.0% | |
| excel/calc_tests/ENGINEERING/CONVERT.xlsx | 509 | 509 | 100.0% | |
| excel/calc_tests/ENGINEERING/ERFs.xlsx | 96 | 96 | 100.0% | |
| excel/calc_tests/ENGINEERING/GESTEP_DELTA.xlsx | 63 | 63 | 100.0% | |
| excel/calc_tests/ENGINEERING/NUMBER_SYSTEMS.xlsx | 710 | 710 | 100.0% | |
| excel/calc_tests/FINANCIAL/ACCRINT.xlsx | 39 | 39 | 100.0% | |
| excel/calc_tests/FINANCIAL/ACCRINTM.xlsx | 17 | 17 | 100.0% | |
| excel/calc_tests/FINANCIAL/ACCRINT_ACCRINTM.xlsx | 51 | 51 | 100.0% | |
| excel/calc_tests/FINANCIAL/ACCRINT_extended.xlsx | 259 | 259 | 100.0% | |
| excel/calc_tests/FINANCIAL/COUPDAYS.xlsx | 225 | 225 | 100.0% | |
| excel/calc_tests/FINANCIAL/CUMPRINC_CUMIPMT.xlsx | 70 | 70 | 100.0% | |
| excel/calc_tests/FINANCIAL/DB_DDB.xlsx | 80 | 80 | 100.0% | |
| excel/calc_tests/FINANCIAL/DISC.xlsx | 19 | 19 | 100.0% | |
| excel/calc_tests/FINANCIAL/FV.xlsx | 47 | 47 | 100.0% | |
| excel/calc_tests/FINANCIAL/FVSCHEDULE.xlsx | 5 | 5 | 100.0% | |
| excel/calc_tests/FINANCIAL/INTRATE.xlsx | 10 | 10 | 100.0% | |
| excel/calc_tests/FINANCIAL/IPMT_PPMT.xlsx | 128 | 128 | 100.0% | |
| excel/calc_tests/FINANCIAL/IRR.xlsx | 132 | 132 | 100.0% | |
| excel/calc_tests/FINANCIAL/ISPMT.xlsx | 29 | 29 | 100.0% | |
| excel/calc_tests/FINANCIAL/MIRR.xlsx | 225 | 225 | 100.0% | |
| excel/calc_tests/FINANCIAL/NOMINAL_EFFECT.xlsx | 90 | 90 | 100.0% | |
| excel/calc_tests/FINANCIAL/NPER.xlsx | 45 | 45 | 100.0% | |
| excel/calc_tests/FINANCIAL/NPV.xlsx | 34 | 34 | 100.0% | |
| excel/calc_tests/FINANCIAL/PDURATION.xlsx | 20 | 20 | 100.0% | |
| excel/calc_tests/FINANCIAL/PMT.xlsx | 309 | 309 | 100.0% | |
| excel/calc_tests/FINANCIAL/PRICE_YIELD.xlsx | 352 | 352 | 100.0% | |
| excel/calc_tests/FINANCIAL/PV.xlsx | 45 | 45 | 100.0% | |
| excel/calc_tests/FINANCIAL/RATE.xlsx | 51 | 51 | 100.0% | |
| excel/calc_tests/FINANCIAL/RRI.xlsx | 22 | 22 | 100.0% | |
| excel/calc_tests/FINANCIAL/SLN_SYD.xlsx | 43 | 43 | 100.0% | |
| excel/calc_tests/FINANCIAL/TBILLs.xlsx | 273 | 273 | 100.0% | |
| excel/calc_tests/FINANCIAL/XIRR.xlsx | 42 | 42 | 100.0% | |
| excel/calc_tests/FINANCIAL/XNPV.xlsx | 24 | 24 | 100.0% | |
| excel/calc_tests/FINANCIAL/accrint_cases.xlsx | 400 | 400 | 100.0% | |
| excel/calc_tests/INFORMATION/CELL.xlsx | 32 | 32 | 100.0% | |
| excel/calc_tests/INFORMATION/ERROR.TYPE.xlsx | 16 | 16 | 100.0% | |
| excel/calc_tests/INFORMATION/FORMULATEXT.xlsx | 27 | 27 | 100.0% | |
| excel/calc_tests/INFORMATION/ISOMITTED.xlsx | 3 | 3 | 100.0% | |
| excel/calc_tests/INFORMATION/ISREF.xlsx | 43 | 43 | 100.0% | |
| excel/calc_tests/INFORMATION/ISREF_ISFORMULA_ISODD_ISEVEN.xlsx | 66 | 66 | 100.0% | |
| excel/calc_tests/INFORMATION/IS_INFORMATION.xlsx | 106 | 106 | 100.0% | |
| excel/calc_tests/INFORMATION/N.xlsx | 21 | 21 | 100.0% | |
| excel/calc_tests/INFORMATION/SHEET_SHEETS.xlsx | 5 | 5 | 100.0% | |
| excel/calc_tests/INFORMATION/TYPE.xlsx | 7 | 7 | 100.0% | |
| excel/calc_tests/INFORMATION/error_broadcast.xlsx | 230 | 230 | 100.0% | |
| excel/calc_tests/LOGICAL/AND_OR_XOR.xlsx | 317 | 317 | 100.0% | |
| excel/calc_tests/LOGICAL/BYCOL_BYROW.xlsx | 5 | 5 | 100.0% | |
| excel/calc_tests/LOGICAL/IFERROR.xlsx | 48 | 48 | 100.0% | |
| excel/calc_tests/LOGICAL/IFNA.xlsx | 11 | 11 | 100.0% | |
| excel/calc_tests/LOGICAL/IFS.xlsx | 45 | 45 | 100.0% | |
| excel/calc_tests/LOGICAL/IF_ARRAY.xlsx | 81 | 81 | 100.0% | |
| excel/calc_tests/LOGICAL/LAMBDA.xlsx | 8 | 8 | 100.0% | |
| excel/calc_tests/LOGICAL/LET.xlsx | 6 | 6 | 100.0% | |
| excel/calc_tests/LOGICAL/MAKEARRAY.xlsx | 9 | 9 | 100.0% | |
| excel/calc_tests/LOGICAL/MAP_REDUCE.xlsx | 7 | 7 | 100.0% | |
| excel/calc_tests/LOGICAL/SCAN.xlsx | 9 | 9 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/ADDRESS.xlsx | 34 | 34 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/CHOOSE.xlsx | 24 | 24 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/CHOOSECOLS_CHOOSEROWS.xlsx | 62 | 62 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/DROP_TAKE.xlsx | 35 | 35 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/EXPAND.xlsx | 34 | 34 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/FILTER_ERRORS.xlsx | 7 | 7 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/HSTACK_VSTACK.xlsx | 36 | 36 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/HVLOOKUP.xlsx | 103 | 103 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/INDEX.xlsx | 20 | 20 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/INDIRECT.xlsx | 114 | 114 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/MATCH.xlsx | 34 | 34 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/MATCH_LOOKUP_arrays.xlsx | 23 | 23 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/ROW_COLUM.xlsx | 196 | 196 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/SORT.xlsx | 239 | 239 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/TOCOL.xlsx | 75 | 75 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/TRANSPOSE.xlsx | 24 | 24 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/TRIMRANGE.xlsx | 18 | 18 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/WRAPCOLS_ROWS.xlsx | 38 | 38 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/XLOOKUP.xlsx | 439 | 439 | 100.0% | |
| excel/calc_tests/LOOKUP_AND_REFERENCE/XMATCH.xlsx | 8 | 8 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/ABS.xlsx | 13 | 13 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/ARABIC_ROMAN.xlsx | 40427 | 40427 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/ATAN2_POWER.xlsx | 61 | 61 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/BASE.xlsx | 61 | 61 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/COMBIN_COMBINA.xlsx | 76 | 76 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/DEGREES_RADIANS.xlsx | 54 | 54 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/EVEN_ODD.xlsx | 87 | 87 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/EXP_SIGN.xlsx | 132 | 132 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/FACT_DOUBLEFACT.xlsx | 14 | 14 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/FLOOR_CEILING.xlsx | 11474 | 11474 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/GCD_LCM.xlsx | 351 | 351 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/LCM_GCD.xlsx | 132 | 132 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/LOG_LOG10_LN.xlsx | 93 | 93 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/MAX_MIN.xlsx | 55 | 55 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/MIN_MAX_extras.xlsx | 21 | 21 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/MMULT.xlsx | 194 | 194 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/MOD_QUOTIENT.xlsx | 93 | 93 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/MROUND_TRUNC_INT.xlsx | 249 | 249 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/MULTINOMIAL.xlsx | 13 | 13 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/MUNIT_MDETERM_MINVERSE.xlsx | 59 | 59 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/POWER.xlsx | 51 | 51 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/PRODUCT.xlsx | 35 | 35 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/PRODUCT_SUM.xlsx | 77 | 77 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/ROUND.xlsx | 137 | 137 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SEQUENCE.xlsx | 70 | 70 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SERIESSUM.xlsx | 12 | 12 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SQRT_SQRTPI.xlsx | 31 | 31 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SUMIFS.xlsx | 285 | 285 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SUMIF_AVERAGE_IF.xlsx | 50 | 50 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SUMIF_array.xlsx | 16 | 16 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SUMPRODUCT.xlsx | 2 | 2 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SUMSQ.xlsx | 60 | 60 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/SUMX2MY2_SUMX2PY2_SUMXMY2.xlsx | 5 | 5 | 100.0% | |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/TRIGONOMETRIC.xlsx | 1187 | 1187 | 100.0% | |
| excel/calc_tests/STATISTICAL/AVEDEV.xlsx | 1 | 1 | 100.0% | |
| excel/calc_tests/STATISTICAL/AVERAGE.xlsx | 52 | 52 | 100.0% | |
| excel/calc_tests/STATISTICAL/BETADIST_BETAINV.xlsx | 147 | 147 | 100.0% | |
| excel/calc_tests/STATISTICAL/BETA_GAMMA.xlsx | 48 | 48 | 100.0% | |
| excel/calc_tests/STATISTICAL/BINOM.xlsx | 268 | 268 | 100.0% | |
| excel/calc_tests/STATISTICAL/CHISQ.xlsx | 8 | 8 | 100.0% | |
| excel/calc_tests/STATISTICAL/CHISQ_TEST.xlsx | 1 | 1 | 100.0% | |
| excel/calc_tests/STATISTICAL/CONFIDENCE.xlsx | 115 | 115 | 100.0% | |
| excel/calc_tests/STATISTICAL/CORREL_SLOPE_INTERCEPT_RSQ_STEYX.xlsx | 5 | 5 | 100.0% | |
| excel/calc_tests/STATISTICAL/COUNT.xlsx | 61 | 61 | 100.0% | |
| excel/calc_tests/STATISTICAL/COUNTIF.xlsx | 531 | 531 | 100.0% | |
| excel/calc_tests/STATISTICAL/COUNTIFS.xlsx | 312 | 312 | 100.0% | |
| excel/calc_tests/STATISTICAL/COVARIANCE.xlsx | 74 | 74 | 100.0% | |
| excel/calc_tests/STATISTICAL/DEVSQ.xlsx | 1 | 1 | 100.0% | |
| excel/calc_tests/STATISTICAL/EXPONDIST.xlsx | 58 | 58 | 100.0% | |
| excel/calc_tests/STATISTICAL/EXPON_DIST.xlsx | 2 | 2 | 100.0% | |
| excel/calc_tests/STATISTICAL/FISHER.xlsx | 10 | 10 | 100.0% | |
| excel/calc_tests/STATISTICAL/FISHER_FISHERINV.xlsx | 83 | 83 | 100.0% | |
| excel/calc_tests/STATISTICAL/FREQUENCY.xlsx | 22 | 22 | 100.0% | |
| excel/calc_tests/STATISTICAL/F_DIST.xlsx | 8 | 8 | 100.0% | |
| excel/calc_tests/STATISTICAL/F_TEST.xlsx | 4 | 4 | 100.0% | |
| excel/calc_tests/STATISTICAL/GAMMA.xlsx | 167 | 167 | 100.0% | |
| excel/calc_tests/STATISTICAL/GAMMALN_GAMMALNPRECISE.xlsx | 91 | 91 | 100.0% | |
| excel/calc_tests/STATISTICAL/GAUSS.xlsx | 39 | 39 | 100.0% | |
| excel/calc_tests/STATISTICAL/HYPERGEOM_DIST.xlsx | 2 | 2 | 100.0% | |
| excel/calc_tests/STATISTICAL/LINEST_LOGEST.xlsx | 32 | 32 | 100.0% | |
| excel/calc_tests/STATISTICAL/LOGNORM.xlsx | 147 | 147 | 100.0% | |
| excel/calc_tests/STATISTICAL/MEADIAN_KURT_SKEW_HARMEAN.xlsx | 6 | 6 | 100.0% | |
| excel/calc_tests/STATISTICAL/MINA_MAXA.xlsx | 12 | 12 | 100.0% | |
| excel/calc_tests/STATISTICAL/MIN_MAX.xlsx | 14 | 14 | 100.0% | |
| excel/calc_tests/STATISTICAL/MODE.xlsx | 20 | 20 | 100.0% | |
| excel/calc_tests/STATISTICAL/NORM_DIST.xlsx | 252 | 252 | 100.0% | |
| excel/calc_tests/STATISTICAL/PEARSON.xlsx | 1 | 1 | 100.0% | |
| excel/calc_tests/STATISTICAL/PERCENTIL_QUARTIL.xlsx | 68 | 68 | 100.0% | |
| excel/calc_tests/STATISTICAL/PERMUT_PERMUTATIONA.xlsx | 35 | 35 | 100.0% | |
| excel/calc_tests/STATISTICAL/PHI.xlsx | 7 | 7 | 100.0% | |
| excel/calc_tests/STATISTICAL/POISSON.xlsx | 63 | 63 | 100.0% | |
| excel/calc_tests/STATISTICAL/PROB.xlsx | 28 | 28 | 100.0% | |
| excel/calc_tests/STATISTICAL/RANK_EQ_RANK_AVG.xlsx | 20 | 20 | 100.0% | |
| excel/calc_tests/STATISTICAL/SMALL_LARGE.xlsx | 26 | 26 | 100.0% | |
| excel/calc_tests/STATISTICAL/STANDARIZE.xlsx | 4 | 4 | 100.0% | |
| excel/calc_tests/STATISTICAL/STDEV.xlsx | 4 | 4 | 100.0% | |
| excel/calc_tests/STATISTICAL/TREND_GROWTH.xlsx | 36 | 36 | 100.0% | |
| excel/calc_tests/STATISTICAL/TRIMMEAN.xlsx | 19 | 19 | 100.0% | |
| excel/calc_tests/STATISTICAL/T_DIST.xlsx | 295 | 295 | 100.0% | |
| excel/calc_tests/STATISTICAL/T_TEST.xlsx | 9 | 9 | 100.0% | |
| excel/calc_tests/STATISTICAL/VARIANCE.xlsx | 6 | 6 | 100.0% | |
| excel/calc_tests/STATISTICAL/WEIBULL_DIST.xlsx | 2 | 2 | 100.0% | |
| excel/calc_tests/STATISTICAL/Z_TEST.xlsx | 4 | 4 | 100.0% | |
| excel/calc_tests/TEXT/ARRAYTOTEXT.xlsx | 3 | 3 | 100.0% | |
| excel/calc_tests/TEXT/CHAR.xlsx | 257 | 257 | 100.0% | |
| excel/calc_tests/TEXT/CONCAT.xlsx | 29 | 29 | 100.0% | |
| excel/calc_tests/TEXT/CONCATENATE.xlsx | 31 | 31 | 100.0% | |
| excel/calc_tests/TEXT/DOLLARs.xlsx | 36 | 36 | 100.0% | |
| excel/calc_tests/TEXT/EXACT.xlsx | 13 | 13 | 100.0% | |
| excel/calc_tests/TEXT/FIND_SEARCH.xlsx | 62 | 62 | 100.0% | |
| excel/calc_tests/TEXT/MID_LEFT_RIGHT_arrays.xlsx | 201 | 201 | 100.0% | |
| excel/calc_tests/TEXT/MINUS_MINUS.xlsx | 73 | 73 | 100.0% | |
| excel/calc_tests/TEXT/PROPER.xlsx | 11 | 11 | 100.0% | |
| excel/calc_tests/TEXT/REGEX.xlsx | 7 | 7 | 100.0% | |
| excel/calc_tests/TEXT/REPT.xlsx | 17 | 17 | 100.0% | |
| excel/calc_tests/TEXT/STRING_HANDLING.xlsx | 147 | 147 | 100.0% | |
| excel/calc_tests/TEXT/SUBSTITUTE.xlsx | 34 | 34 | 100.0% | |
| excel/calc_tests/TEXT/TEXT.xlsx | 374 | 374 | 100.0% | |
| excel/calc_tests/TEXT/TEXTBEFORE_TEXTAFTER.xlsx | 143 | 143 | 100.0% | |
| excel/calc_tests/TEXT/TEXTJOIN.xlsx | 42 | 42 | 100.0% | |
| excel/calc_tests/TEXT/TEXTSPLIT.xlsx | 72 | 72 | 100.0% | |
| excel/calc_tests/TEXT/T_VALUE_VALUETOTEXT.xlsx | 63 | 63 | 100.0% | |
| excel/calc_tests/TEXT/UNICODE.xlsx | 24 | 24 | 100.0% | |
| excel/calc_tests/TEXT/UPPER_LOWER.xlsx | 56 | 56 | 100.0% | |
| excel/calc_tests/arithmetic.xlsx | 60 | 60 | 100.0% | |
| excel/calc_tests/consume_string.xlsx | 0 | 0 | – | |
| excel/calc_tests/defined_names.xlsx | 24 | 24 | 100.0% | |
| excel/calc_tests/defined_names_for_unit_test.xlsx | 3 | 3 | 100.0% | |
| excel/calc_tests/escape_strings.xlsx | 2 | 2 | 100.0% | |
| excel/calc_tests/issue_341.xlsx | 5 | 5 | 100.0% | |
| excel/calc_tests/logical.xlsx | 188 | 188 | 100.0% | |
| excel/calc_tests/percentage.xlsx | 6 | 6 | 100.0% | |
| excel/calc_tests/quotes.xlsx | 5 | 5 | 100.0% | |
| excel/calc_tests/range_operator.xlsx | 9 | 9 | 100.0% | |
| excel/calc_tests/simple_arrays.xlsx | 3 | 3 | 100.0% | |
| excel/calc_tests/simple_functions.xlsx | 199 | 199 | 100.0% | |
| excel/calc_tests/spill_operator.xlsx | 17 | 17 | 100.0% | |
| excel/docs/COS.xlsx | 20 | 20 | 100.0% | |
| excel/docs/DATE.xlsx | 16 | 16 | 100.0% | |
| excel/docs/DAY.xlsx | 30 | 30 | 100.0% | |
| excel/docs/ERF-PRECISE.xlsx | 72 | 72 | 100.0% | |
| excel/docs/ERF.xlsx | 84 | 84 | 100.0% | |
| excel/docs/ERFC-PRECISE.xlsx | 72 | 72 | 100.0% | |
| excel/docs/ERFC.xlsx | 72 | 72 | 100.0% | |
| excel/docs/FV.xlsx | 20 | 20 | 100.0% | |
| excel/docs/MONTH.xlsx | 30 | 30 | 100.0% | |
| excel/docs/PV.xlsx | 20 | 20 | 100.0% | |
| excel/docs/SIN.xlsx | 20 | 20 | 100.0% | |
| excel/docs/TAN.xlsx | 32 | 32 | 100.0% | |
| excel/docs/YEAR.xlsx | 30 | 30 | 100.0% | |
| excel/dynamic_arrays.xlsx | 40 | 40 | 100.0% | |
| excel/tables.xlsx | 212 | 212 | 100.0% | |
| excel/templates/crossword.xlsx | 3 | 3 | 100.0% | |
| excel/templates/event_calendar.xlsx | 979 | 979 | 100.0% | |
| excel/templates/gantt_project_tracker.xlsx | 444 | 444 | 100.0% | |
| excel/templates/invoice.xlsx | 27 | 27 | 100.0% | |
| excel/templates/travel_expenses_tracker.xlsx | 42 | 42 | 100.0% | |
| excel/templates/weekly_timesheet.xlsx | 109 | 109 | 100.0% | |
| excel/templates/wordle.xlsx | 782 | 782 | 100.0% | |
| excel/templates/yearly_calendar.xlsx | 602 | 602 | 100.0% |
Stated exceptions
From tests/corpus/overrides.json: the locale Excel calculated a file in, which a file does not record, and wider tolerances for cells where Excel's result is only as accurate as its solver.
| File | Cells | Rule | Reason |
|---|---|---|---|
| excel/calc_tests/TEXT/T_VALUE_VALUETOTEXT.xlsx | all | culture en-IE | Excel calculated the file with the euro and day-first dates: VALUE("23€") is 23 and "10-12-1999" is 10 December. A file does not record its locale; with en-IE every cell matches, with en-GB only part do. |
| excel/calc_tests/MATH_AND_TRIGONOMETRY/EXP_SIGN.xlsx | all | culture en-IE | Excel read the text "€100" as the number 100, so the file was calculated with the euro. |
| excel/calc_tests/DATE_AND_TIME/DATEVALUE.xlsx | all | culture en-IE | Excel read "26-01-01" with the day first, as in the locale it calculated the file in. |
| excel/calc_tests/DATE_AND_TIME/DAYS_DAYS360.xlsx | all | culture en-IE | Excel did not read "July 1, 2026" as a date, as in a day-first English locale. |
| excel/calc_tests/DATE_AND_TIME/NETWORKDAYS_NETWORKDAYS.INTL.xlsx | all | culture en-IE | Excel did not read "July 1, 2026" as a date, as in a day-first English locale. |
| excel/calc_tests/FINANCIAL/IRR.xlsx | General!M2:M19, General!L22, Two Values!C4, Three Parameters!D2, Three Parameters!E2:E5, FullRow!P1:Q1, FullRow!N2:R2, FullColumn!B21:B23 | absolute 1e-06 | NPV at the rate IRR found, and IRR where the exact rate is 0: both are zero up to the solver's accuracy (Excel documents IRR as accurate within 0.00001 percent), so Excel and SharpCell give different tiny numbers. |
| excel/calc_tests/FINANCIAL/XNPV.xlsx | Sheet1!R2, Sheet1!R4:R5 | absolute 1e-08, relative 1e-08 | Excel stops XIRR when the result is accurate within 0.000001 percent (Microsoft's documentation of XIRR); SharpCell solves further. |
| excel/calc_tests/FINANCIAL/PRICE_YIELD.xlsx | ODDFPRICE_ODDFYIELD!K8, ODDFPRICE_ODDFYIELD!K31, ODDFPRICE_ODDFYIELD!K49 | relative 1e-08 | The exact yield is 0.05, the rate the prices were made from; Excel's iteration stops about 7e-11 short of it and SharpCell reaches it. |
| excel/calc_tests/STATISTICAL/BETADIST_BETAINV.xlsx | Sheet1!H16 | absolute 1e-15 | The result is zero up to rounding: Excel gives -2.2e-16 and SharpCell -1.1e-16. |
| excel/calc_tests/STATISTICAL/NORM_DIST.xlsx | NORM.DIST NORM.INV!F16 | absolute 1e-15 | The probability is 0.5 plus about 1e-11, so the result's last digits are below the precision of the input itself; the two differ by 9e-16. |