ERRORTYPE
Unsupported (not recognized)Category: Spreadsheet · Last tested 2026-09-01
Real compatibility results for the ERRORTYPE function: executed in Excel for the web, Google Sheets and LibreOffice Calc, measured against LibreOffice’s published documentation. Excel does not document ERRORTYPE, so this page makes no claim about Excel. Syntax and links to that documentation are below.
Support matrix
| Engine | Documented | Live-tested | Verdict |
|---|---|---|---|
| Excel (desktop) | No | n/a (not an Excel function) | n/a |
| Excel for the web | — | Yes (recalc, 2026-09-01) | Unsupported (not recognized) |
| Google Sheets | No | Yes (Drive import, 2026-09-01) | Unsupported (not recognized) |
| LibreOffice Calc | Yes | Yes (25.8.7.3, 2026-09-01) | Supported, behaves as documented |
LibreOffice version history
We executed the same test cases under each LibreOffice release to show exactly when ERRORTYPE’s support changed — not documentation claims, real results.
| LibreOffice version | Verdict | Tested |
|---|---|---|
| 24.2.0.3 | Supported, behaves as documented | 2026-09-01 |
| 24.8.7.2 | Supported, behaves as documented | 2026-09-01 |
| 25.2.0.3 | Supported, behaves as documented | 2026-09-01 |
| 25.8.7.3 | Supported, behaves as documented | 2026-09-01 |
Why isn’t ERRORTYPE working in Google Sheets?
Google Sheets does not implement ERRORTYPE: we imported the formula into
Sheets on 2026-09-01 and every case came back #NAME?
(unrecognized function). Sheets is a rolling service with no version to pin, so this is a
statement about the service on that date, and Google’s own
function list does not document it either. Rewrite the formula with a documented
Sheets equivalent — see the
Excel ↔ Sheets equivalents table.
Discovered quirks
-
=ERRORTYPE(A1) on
Excel for the web returned
#NAME?, but the documented/expected
result is 532.
Provenance
DERIVED FROM TWO LIBREOFFICE PAGES THAT HAVE TO BE READ TOGETHER, because neither is sufficient alone. ERRORTYPE's own entry in Spreadsheet Functions states the behaviour -- "Returns the number corresponding to an error value occurring in a different cell", "The Status Bar displays the predefined error code from LibreOffice if you click the cell containing the error" -- and gives exactly one example, "If cell A1 displays Err:518, the function =ERRORTYPE(A1) returns the number 518", which is not reproducible from a worksheet formula (518 is an internal 'variable is not available' condition). The CODES are published separately, in LibreOffice's Error Codes in LibreOffice Calc table, which lists 532 against '#DIV/0! Division by zero -- Division operator / if the denominator is 0'. This case and the three below assert that table's codes for the four error conditions a worksheet formula can raise deliberately. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. STORAGE FORM, ESTABLISHED EMPIRICALLY IN BOTH DIRECTIONS BEFORE THIS FILE WAS RUN. A LibreOffice-only function has no OOXML name of its own -- the .xlsx format was frozen on Excel's function set -- so LibreOffice invents one, and this harness must write exactly the token LibreOffice's own .xlsx filter reads. Both directions were measured rather than assumed. IMPORT: every candidate spelling was written into a workbook by openpyxl (which caches no value, so the engine must evaluate from scratch) and round-tripped through `soffice --headless --convert-to xlsx` on all four pinned builds. EXPORT: the same formulas were fed to each build through its own formula parser and written back out to .xlsx, and the stored token was read out of the raw sheet XML. The token recorded for this function in harness/xlfn_map.py is the one both directions agree on across all four builds; the per-function note above says which it is. BATCH PROVENANCE (batch I, group C -- LibreOffice-only functions). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands, the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose. scripts/check_honesty.py bans the blanket negative shape of this sentence outright -- it was once a true site-wide claim and is now false for more than 500 functions -- and that guard is worth keeping blunt, so this note carries the same per-function fact in a form the guard does not have to make an exception for.) LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 532, got '#NAME?'
-
=ERRORTYPE(A1) on
Excel for the web returned
#NAME?, but the documented/expected
result is 519.
Provenance
DERIVED from the published error-code table, which lists 519 against '#VALUE! No value (instead of Err:519 cell displays #VALUE!)' with the explanation 'The formula yields a value that does not correspond to the definition; or a cell that is referenced in the formula contains text instead of a number.' Adding 1 to the string "a" is exactly that second condition. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 519, got '#NAME?'
-
=ERRORTYPE(A1) on
Excel for the web returned
#NAME?, but the documented/expected
result is 502.
Provenance
DERIVED from the published error-code table, whose entry for 502 is 'Invalid argument -- Function argument is not valid. For example, a negative number for the SQRT() function, for this please use IMSQRT().' The formula in this case is the table's own worked example, so the expected code is as directly published as this function's codes get. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 502, got '#NAME?'
-
=ERRORTYPE(A1) on
Excel for the web returned
#NAME?, but the documented/expected
result is 525.
Provenance
DERIVED from the published error-code table: 525 is '#NAME? Invalid names -- An identifier could not be evaluated, for example, no valid reference, no valid function name, no column/row label, no macro, add-in not found.' A call to a function that does not exist is the 'no valid function name' arm of that list. This case is also the one that ties ERRORTYPE to the rest of this corpus: 525 is the numeric form of the same #NAME? that every unsupported-function verdict in the dataset is built on. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 525, got '#NAME?'
-
=ERRORTYPE(A1) on
Google Sheets returned
#NAME?, but the documented/expected
result is 532.
Provenance
DERIVED FROM TWO LIBREOFFICE PAGES THAT HAVE TO BE READ TOGETHER, because neither is sufficient alone. ERRORTYPE's own entry in Spreadsheet Functions states the behaviour -- "Returns the number corresponding to an error value occurring in a different cell", "The Status Bar displays the predefined error code from LibreOffice if you click the cell containing the error" -- and gives exactly one example, "If cell A1 displays Err:518, the function =ERRORTYPE(A1) returns the number 518", which is not reproducible from a worksheet formula (518 is an internal 'variable is not available' condition). The CODES are published separately, in LibreOffice's Error Codes in LibreOffice Calc table, which lists 532 against '#DIV/0! Division by zero -- Division operator / if the denominator is 0'. This case and the three below assert that table's codes for the four error conditions a worksheet formula can raise deliberately. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. STORAGE FORM, ESTABLISHED EMPIRICALLY IN BOTH DIRECTIONS BEFORE THIS FILE WAS RUN. A LibreOffice-only function has no OOXML name of its own -- the .xlsx format was frozen on Excel's function set -- so LibreOffice invents one, and this harness must write exactly the token LibreOffice's own .xlsx filter reads. Both directions were measured rather than assumed. IMPORT: every candidate spelling was written into a workbook by openpyxl (which caches no value, so the engine must evaluate from scratch) and round-tripped through `soffice --headless --convert-to xlsx` on all four pinned builds. EXPORT: the same formulas were fed to each build through its own formula parser and written back out to .xlsx, and the stored token was read out of the raw sheet XML. The token recorded for this function in harness/xlfn_map.py is the one both directions agree on across all four builds; the per-function note above says which it is. BATCH PROVENANCE (batch I, group C -- LibreOffice-only functions). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands, the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose. scripts/check_honesty.py bans the blanket negative shape of this sentence outright -- it was once a true site-wide claim and is now false for more than 500 functions -- and that guard is worth keeping blunt, so this note carries the same per-function fact in a form the guard does not have to make an exception for.) LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 532, got '#NAME?'
-
=ERRORTYPE(A1) on
Google Sheets returned
#NAME?, but the documented/expected
result is 519.
Provenance
DERIVED from the published error-code table, which lists 519 against '#VALUE! No value (instead of Err:519 cell displays #VALUE!)' with the explanation 'The formula yields a value that does not correspond to the definition; or a cell that is referenced in the formula contains text instead of a number.' Adding 1 to the string "a" is exactly that second condition. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 519, got '#NAME?'
-
=ERRORTYPE(A1) on
Google Sheets returned
#NAME?, but the documented/expected
result is 502.
Provenance
DERIVED from the published error-code table, whose entry for 502 is 'Invalid argument -- Function argument is not valid. For example, a negative number for the SQRT() function, for this please use IMSQRT().' The formula in this case is the table's own worked example, so the expected code is as directly published as this function's codes get. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 502, got '#NAME?'
-
=ERRORTYPE(A1) on
Google Sheets returned
#NAME?, but the documented/expected
result is 525.
Provenance
DERIVED from the published error-code table: 525 is '#NAME? Invalid names -- An identifier could not be evaluated, for example, no valid reference, no valid function name, no column/row label, no macro, add-in not found.' A call to a function that does not exist is the 'no valid function name' arm of that list. This case is also the one that ties ERRORTYPE to the rest of this corpus: 525 is the numeric form of the same #NAME? that every unsupported-function verdict in the dataset is built on. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html.; MISMATCH vs expected: expected 525, got '#NAME?'
Executed test cases
Excel for the web (executed 2026-09-01 via OneDrive recalculation)
These values come from Excel for the web, not from desktop Excel. They are two different implementations of the calculation engine, and this run measured only the web one: the corpus was uploaded to OneDrive as .xlsx, recalculated by Excel for the web on open, and downloaded again for readback. Excel for the web is a rolling service with no pinnable version, so the run is identified by its date. Where a value here disagrees with the Expected column — which is Microsoft’s documentation of the desktop product — we cannot tell you whether the web engine diverges from the desktop one or the documentation is wrong about both, because we do not run desktop Excel.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ERRORTYPE(A1) | The error code for division by zero | #NAME? | 532ProvenanceDERIVED FROM TWO LIBREOFFICE PAGES THAT HAVE TO BE READ TOGETHER, because neither is sufficient alone. ERRORTYPE's own entry in Spreadsheet Functions states the behaviour -- "Returns the number corresponding to an error value occurring in a different cell", "The Status Bar displays the predefined error code from LibreOffice if you click the cell containing the error" -- and gives exactly one example, "If cell A1 displays Err:518, the function =ERRORTYPE(A1) returns the number 518", which is not reproducible from a worksheet formula (518 is an internal 'variable is not available' condition). The CODES are published separately, in LibreOffice's Error Codes in LibreOffice Calc table, which lists 532 against '#DIV/0! Division by zero -- Division operator / if the denominator is 0'. This case and the three below assert that table's codes for the four error conditions a worksheet formula can raise deliberately. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. STORAGE FORM, ESTABLISHED EMPIRICALLY IN BOTH DIRECTIONS BEFORE THIS FILE WAS RUN. A LibreOffice-only function has no OOXML name of its own -- the .xlsx format was frozen on Excel's function set -- so LibreOffice invents one, and this harness must write exactly the token LibreOffice's own .xlsx filter reads. Both directions were measured rather than assumed. IMPORT: every candidate spelling was written into a workbook by openpyxl (which caches no value, so the engine must evaluate from scratch) and round-tripped through `soffice --headless --convert-to xlsx` on all four pinned builds. EXPORT: the same formulas were fed to each build through its own formula parser and written back out to .xlsx, and the stored token was read out of the raw sheet XML. The token recorded for this function in harness/xlfn_map.py is the one both directions agree on across all four builds; the per-function note above says which it is. BATCH PROVENANCE (batch I, group C -- LibreOffice-only functions). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands, the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose. scripts/check_honesty.py bans the blanket negative shape of this sentence outright -- it was once a true site-wide claim and is now false for more than 500 functions -- and that guard is worth keeping blunt, so this note carries the same per-function fact in a form the guard does not have to make an exception for.) LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
| =ERRORTYPE(A1) | The error code for a value error | #NAME? | 519ProvenanceDERIVED from the published error-code table, which lists 519 against '#VALUE! No value (instead of Err:519 cell displays #VALUE!)' with the explanation 'The formula yields a value that does not correspond to the definition; or a cell that is referenced in the formula contains text instead of a number.' Adding 1 to the string "a" is exactly that second condition. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
| =ERRORTYPE(A1) | The error code for an invalid argument, using the table's own example | #NAME? | 502ProvenanceDERIVED from the published error-code table, whose entry for 502 is 'Invalid argument -- Function argument is not valid. For example, a negative number for the SQRT() function, for this please use IMSQRT().' The formula in this case is the table's own worked example, so the expected code is as directly published as this function's codes get. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
| =ERRORTYPE(A1) | The error code for an unresolvable name | #NAME? | 525ProvenanceDERIVED from the published error-code table: 525 is '#NAME? Invalid names -- An identifier could not be evaluated, for example, no valid reference, no valid function name, no column/row label, no macro, add-in not found.' A call to a function that does not exist is the 'no valid function name' arm of that list. This case is also the one that ties ERRORTYPE to the rest of this corpus: 525 is the numeric form of the same #NAME? that every unsupported-function verdict in the dataset is built on. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
Google Sheets (executed 2026-09-01 via Drive import)
Google Sheets is a rolling service with no pinnable version, so this run is identified by its date. The corpus was imported to Drive as .xlsx, recalculated by Sheets, and exported back for readback.
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ERRORTYPE(A1) | The error code for division by zero | #NAME? | 532ProvenanceDERIVED FROM TWO LIBREOFFICE PAGES THAT HAVE TO BE READ TOGETHER, because neither is sufficient alone. ERRORTYPE's own entry in Spreadsheet Functions states the behaviour -- "Returns the number corresponding to an error value occurring in a different cell", "The Status Bar displays the predefined error code from LibreOffice if you click the cell containing the error" -- and gives exactly one example, "If cell A1 displays Err:518, the function =ERRORTYPE(A1) returns the number 518", which is not reproducible from a worksheet formula (518 is an internal 'variable is not available' condition). The CODES are published separately, in LibreOffice's Error Codes in LibreOffice Calc table, which lists 532 against '#DIV/0! Division by zero -- Division operator / if the denominator is 0'. This case and the three below assert that table's codes for the four error conditions a worksheet formula can raise deliberately. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. STORAGE FORM, ESTABLISHED EMPIRICALLY IN BOTH DIRECTIONS BEFORE THIS FILE WAS RUN. A LibreOffice-only function has no OOXML name of its own -- the .xlsx format was frozen on Excel's function set -- so LibreOffice invents one, and this harness must write exactly the token LibreOffice's own .xlsx filter reads. Both directions were measured rather than assumed. IMPORT: every candidate spelling was written into a workbook by openpyxl (which caches no value, so the engine must evaluate from scratch) and round-tripped through `soffice --headless --convert-to xlsx` on all four pinned builds. EXPORT: the same formulas were fed to each build through its own formula parser and written back out to .xlsx, and the stored token was read out of the raw sheet XML. The token recorded for this function in harness/xlfn_map.py is the one both directions agree on across all four builds; the per-function note above says which it is. BATCH PROVENANCE (batch I, group C -- LibreOffice-only functions). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands, the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose. scripts/check_honesty.py bans the blanket negative shape of this sentence outright -- it was once a true site-wide claim and is now false for more than 500 functions -- and that guard is worth keeping blunt, so this note carries the same per-function fact in a form the guard does not have to make an exception for.) LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
| =ERRORTYPE(A1) | The error code for a value error | #NAME? | 519ProvenanceDERIVED from the published error-code table, which lists 519 against '#VALUE! No value (instead of Err:519 cell displays #VALUE!)' with the explanation 'The formula yields a value that does not correspond to the definition; or a cell that is referenced in the formula contains text instead of a number.' Adding 1 to the string "a" is exactly that second condition. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
| =ERRORTYPE(A1) | The error code for an invalid argument, using the table's own example | #NAME? | 502ProvenanceDERIVED from the published error-code table, whose entry for 502 is 'Invalid argument -- Function argument is not valid. For example, a negative number for the SQRT() function, for this please use IMSQRT().' The formula in this case is the table's own worked example, so the expected code is as directly published as this function's codes get. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
| =ERRORTYPE(A1) | The error code for an unresolvable name | #NAME? | 525ProvenanceDERIVED from the published error-code table: 525 is '#NAME? Invalid names -- An identifier could not be evaluated, for example, no valid reference, no valid function name, no column/row label, no macro, add-in not found.' A call to a function that does not exist is the 'no valid function name' arm of that list. This case is also the one that ties ERRORTYPE to the rest of this corpus: 525 is the numeric form of the same #NAME? that every unsupported-function verdict in the dataset is built on. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Mismatch |
LibreOffice Calc 25.8.7.3 (tested 2026-09-01)
| Formula | Description | Result | Expected | Verdict |
|---|---|---|---|---|
| =ERRORTYPE(A1) | The error code for division by zero | 532 | 532ProvenanceDERIVED FROM TWO LIBREOFFICE PAGES THAT HAVE TO BE READ TOGETHER, because neither is sufficient alone. ERRORTYPE's own entry in Spreadsheet Functions states the behaviour -- "Returns the number corresponding to an error value occurring in a different cell", "The Status Bar displays the predefined error code from LibreOffice if you click the cell containing the error" -- and gives exactly one example, "If cell A1 displays Err:518, the function =ERRORTYPE(A1) returns the number 518", which is not reproducible from a worksheet formula (518 is an internal 'variable is not available' condition). The CODES are published separately, in LibreOffice's Error Codes in LibreOffice Calc table, which lists 532 against '#DIV/0! Division by zero -- Division operator / if the denominator is 0'. This case and the three below assert that table's codes for the four error conditions a worksheet formula can raise deliberately. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. STORAGE FORM, ESTABLISHED EMPIRICALLY IN BOTH DIRECTIONS BEFORE THIS FILE WAS RUN. A LibreOffice-only function has no OOXML name of its own -- the .xlsx format was frozen on Excel's function set -- so LibreOffice invents one, and this harness must write exactly the token LibreOffice's own .xlsx filter reads. Both directions were measured rather than assumed. IMPORT: every candidate spelling was written into a workbook by openpyxl (which caches no value, so the engine must evaluate from scratch) and round-tripped through `soffice --headless --convert-to xlsx` on all four pinned builds. EXPORT: the same formulas were fed to each build through its own formula parser and written back out to .xlsx, and the stored token was read out of the raw sheet XML. The token recorded for this function in harness/xlfn_map.py is the one both directions agree on across all four builds; the per-function note above says which it is. BATCH PROVENANCE (batch I, group C -- LibreOffice-only functions). This function has x == false AND g == false in docs/data/compat.json: NEITHER Microsoft NOR Google documents it, so this corpus makes no claim about either of those engines, nothing here is measured against their documentation, and the Excel column on the published page reads 'n/a (not an Excel function)' rather than a verdict. The authority is LibreOffice's own help, cited by full URL, by the date it was read (2026-08-31), and by the help version the page serves -- the URLs in this file are pinned to /25.8/ rather than /latest/ so the citation still means this text after the help site rolls forward, and /25.8/ is the help for the newest of the four engine builds the corpus executes. GOOGLE SHEETS: this batch builds the Sheets chunk whose ingest will record presence or absence in that engine. Until that ingest lands, the Sheets column on the published page reads 'Not yet' and nothing in this file claims anything about it. (Stated positively on purpose. scripts/check_honesty.py bans the blanket negative shape of this sentence outright -- it was once a true site-wide claim and is now false for more than 500 functions -- and that guard is worth keeping blunt, so this note carries the same per-function fact in a form the guard does not have to make an exception for.) LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Matched |
| =ERRORTYPE(A1) | The error code for a value error | 519 | 519ProvenanceDERIVED from the published error-code table, which lists 519 against '#VALUE! No value (instead of Err:519 cell displays #VALUE!)' with the explanation 'The formula yields a value that does not correspond to the definition; or a cell that is referenced in the formula contains text instead of a number.' Adding 1 to the string "a" is exactly that second condition. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Matched |
| =ERRORTYPE(A1) | The error code for an invalid argument, using the table's own example | 502 | 502ProvenanceDERIVED from the published error-code table, whose entry for 502 is 'Invalid argument -- Function argument is not valid. For example, a negative number for the SQRT() function, for this please use IMSQRT().' The formula in this case is the table's own worked example, so the expected code is as directly published as this function's codes get. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Matched |
| =ERRORTYPE(A1) | The error code for an unresolvable name | 525 | 525ProvenanceDERIVED from the published error-code table: 525 is '#NAME? Invalid names -- An identifier could not be evaluated, for example, no valid reference, no valid function name, no column/row label, no macro, add-in not found.' A call to a function that does not exist is the 'no valid function name' arm of that list. This case is also the one that ties ERRORTYPE to the rest of this corpus: 525 is the numeric form of the same #NAME? that every unsupported-function verdict in the dataset is built on. Error-code table read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/05/02140000.html. LibreOffice's ERRORTYPE help page, read live on 2026-08-31 at https://help.libreoffice.org/25.8/en-US/text/scalc/01/04060109.html. |
Matched |
Docs & syntax
- LibreOffice Calc: official documentation
Where ERRORTYPE behaves differently
- Your function exists but your file cannot say so: _xlfn storage tokens
Executed: eight IM* functions LibreOffice implements return #NAME? on all four builds because it cannot read Excel's _xlfn. token for them, while COT and CSC only work under that same prefix. Eleven LibreOffice aliases are erased by its own exporter, and a token change between 24.2 and 24.8 makes a 24.8-written file open as #NAME? in 24.2.