← All functions

FILTERXML

Unsupported (not recognized)

Category: Web · Last tested 2026-09-01

Real compatibility results for the FILTERXML function: executed in Excel for the web, Google Sheets and LibreOffice Calc, with desktop Excel behavior from Microsoft’s official documentation (we do not run desktop Excel — Excel for the web is a different application and is executed separately). Syntax and links to that documentation are below.

Support matrix

EngineDocumentedLive-testedVerdict
Excel (desktop)Yes No — documented only n/a
Excel for the web— Yes (recalc, 2026-09-01) Inconclusive (no verdict published)
Google SheetsNo Yes (Drive import, 2026-08-31) Unsupported (not recognized)
LibreOffice CalcYes Yes (25.8.7.3, 2026-08-31) Supported, behaves as documented

LibreOffice version history

We executed the same test cases under each LibreOffice release to show exactly when FILTERXML’s support changed — not documentation claims, real results.

LibreOffice versionVerdictTested
24.2.0.3 Supported, behaves as documented 2026-08-31
24.8.7.2 Supported, behaves as documented 2026-08-31
25.2.0.3 Supported, behaves as documented 2026-08-31
25.8.7.3 Supported, behaves as documented 2026-08-31

Why isn’t FILTERXML working in Google Sheets?

Google Sheets does not implement FILTERXML: we imported the formula into Sheets on 2026-08-31 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.

Excel for the web: executed, but no verdict published. Excel for the web returned #VALUE! for every case — both the two that expected a parsed value and the two that expected #VALUE!. That the latter two “matched” is a coincidence of a uniform error, not a demonstration that the function works, so they cannot carry a verdict either. As with ENCODEURL, the name resolves (an unknown name is #NAME? here) and the error does not vary with the arguments, which points at a feature the web application does not ship rather than at a calculation defect. Our expected values describe the desktop product. The values are published verbatim and no verdict is drawn. Every executed case is shown below with exactly what Excel for the web returned.

Discovered quirks

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.

FormulaDescriptionResultExpectedVerdict
=FILTERXML(A1,"//t[2]") Selecting the second matching element with a standard XPath predicate #VALUE! beta
Provenance

Microsoft's page gives no self-contained worked example -- its only example pipes live output of WEBSERVICE into FILTERXML, which no offline harness can reproduce -- so this case supplies literal XML and asserts what the documented contract requires: "returns specific data from XML content by using the specified xpath", with xpath documented as "A string in standard XPath format". Against <r><t>alpha</t><t>beta</t></r> the standard XPath //t[2] selects the second t element, whose string value is "beta"; re-derived with Python's ElementTree, which is an independent XPath implementation from either spreadsheet engine's.

Inconclusive
=FILTERXML(A2,"//rc/@title") Selecting an attribute value, the form Microsoft's own example uses #VALUE! Excel
Provenance

Microsoft's page documents its live example as "Cells B3:B5 contain the formula =FILTERXML(B3,"//rc/@title")", i.e. an attribute selection on rc elements. This case keeps that exact XPath and supplies a literal <rc title="Excel" .../> element in place of the unreachable Wikipedia feed, so the documented attribute form is exercised deterministically. Re-derived with ElementTree.

Inconclusive
=FILTERXML(A3,"//t") Malformed XML (an unclosed root element) #VALUE! #VALUE!
Provenance

Excel documents: "If xml is not valid, FILTERXML returns the #VALUE! error value." A3 holds <r><t>alpha</t> with no closing </r>, which is not well-formed XML; ElementTree rejects it with a ParseError, confirming the input really is invalid rather than merely unusual.

Inconclusive
=FILTERXML(A4,"//x:t") An element using a namespace prefix that was never declared #VALUE! #VALUE!
Provenance

Excel documents this as a separate failure mode from malformed XML: "If xml contains a namespace with a prefix that is not valid, FILTERXML returns the #VALUE! error value." A4 holds <r><x:t>alpha</x:t></r>, where the prefix x is bound to no namespace; ElementTree rejects it with "unbound prefix", confirming the condition the documentation describes.

Inconclusive

Google Sheets (executed 2026-08-31 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.

FormulaDescriptionResultExpectedVerdict
=FILTERXML(A1,"//t[2]") Selecting the second matching element with a standard XPath predicate #NAME? beta
Provenance

Microsoft's page gives no self-contained worked example -- its only example pipes live output of WEBSERVICE into FILTERXML, which no offline harness can reproduce -- so this case supplies literal XML and asserts what the documented contract requires: "returns specific data from XML content by using the specified xpath", with xpath documented as "A string in standard XPath format". Against <r><t>alpha</t><t>beta</t></r> the standard XPath //t[2] selects the second t element, whose string value is "beta"; re-derived with Python's ElementTree, which is an independent XPath implementation from either spreadsheet engine's.

Mismatch
=FILTERXML(A2,"//rc/@title") Selecting an attribute value, the form Microsoft's own example uses #NAME? Excel
Provenance

Microsoft's page documents its live example as "Cells B3:B5 contain the formula =FILTERXML(B3,"//rc/@title")", i.e. an attribute selection on rc elements. This case keeps that exact XPath and supplies a literal <rc title="Excel" .../> element in place of the unreachable Wikipedia feed, so the documented attribute form is exercised deterministically. Re-derived with ElementTree.

Mismatch
=FILTERXML(A3,"//t") Malformed XML (an unclosed root element) #NAME? #VALUE!
Provenance

Excel documents: "If xml is not valid, FILTERXML returns the #VALUE! error value." A3 holds <r><t>alpha</t> with no closing </r>, which is not well-formed XML; ElementTree rejects it with a ParseError, confirming the input really is invalid rather than merely unusual.

Mismatch
=FILTERXML(A4,"//x:t") An element using a namespace prefix that was never declared #NAME? #VALUE!
Provenance

Excel documents this as a separate failure mode from malformed XML: "If xml contains a namespace with a prefix that is not valid, FILTERXML returns the #VALUE! error value." A4 holds <r><x:t>alpha</x:t></r>, where the prefix x is bound to no namespace; ElementTree rejects it with "unbound prefix", confirming the condition the documentation describes.

Mismatch

LibreOffice Calc 25.8.7.3 (tested 2026-08-31)

FormulaDescriptionResultExpectedVerdict
=FILTERXML(A1,"//t[2]") Selecting the second matching element with a standard XPath predicate beta beta
Provenance

Microsoft's page gives no self-contained worked example -- its only example pipes live output of WEBSERVICE into FILTERXML, which no offline harness can reproduce -- so this case supplies literal XML and asserts what the documented contract requires: "returns specific data from XML content by using the specified xpath", with xpath documented as "A string in standard XPath format". Against <r><t>alpha</t><t>beta</t></r> the standard XPath //t[2] selects the second t element, whose string value is "beta"; re-derived with Python's ElementTree, which is an independent XPath implementation from either spreadsheet engine's.

Matched
=FILTERXML(A2,"//rc/@title") Selecting an attribute value, the form Microsoft's own example uses Excel Excel
Provenance

Microsoft's page documents its live example as "Cells B3:B5 contain the formula =FILTERXML(B3,"//rc/@title")", i.e. an attribute selection on rc elements. This case keeps that exact XPath and supplies a literal <rc title="Excel" .../> element in place of the unreachable Wikipedia feed, so the documented attribute form is exercised deterministically. Re-derived with ElementTree.

Matched
=FILTERXML(A3,"//t") Malformed XML (an unclosed root element) #VALUE! #VALUE!
Provenance

Excel documents: "If xml is not valid, FILTERXML returns the #VALUE! error value." A3 holds <r><t>alpha</t> with no closing </r>, which is not well-formed XML; ElementTree rejects it with a ParseError, confirming the input really is invalid rather than merely unusual.

Matched
=FILTERXML(A4,"//x:t") An element using a namespace prefix that was never declared #VALUE! #VALUE!
Provenance

Excel documents this as a separate failure mode from malformed XML: "If xml contains a namespace with a prefix that is not valid, FILTERXML returns the #VALUE! error value." A4 holds <r><x:t>alpha</x:t></r>, where the prefix x is bound to no namespace; ElementTree rejects it with "unbound prefix", confirming the condition the documentation describes.

Matched

Docs & syntax