function

XMLFILTRO

Todo sobre la función XMLFILTRO en Excel

La función XMLFILTRO en Excel es una potente herramienta diseñada para analizar y extraer datos de cadenas de texto en formato XML (Lenguaje de Marcado Extensible). Utiliza el lenguaje de consulta XPath para navegar a través de la estructura del XML y devolver los valores, elementos o atributos que coincidan con la expresión especificada.

Esta función es especialmente útil cuando se trabaja con datos obtenidos de servicios web o API que devuelven información en formato XML, a menudo en combinación con la función SERVICIOWEB.

Sintaxis

=XMLFILTRO(xml, xpath)

La función XMLFILTRO tiene los siguientes argumentos:

  • xml: Una cadena de texto que contiene los datos XML bien formados. Puede ser una referencia a una celda que contenga el XML o el resultado de otra función. Obligatorio.
  • xpath: Una cadena de texto que representa la expresión XPath (XML Path Language) que se usará para consultar el XML. Obligatorio.

Ejemplos

Ejemplo 1: Extraer todos los títulos de libros

Supongamos que la celda A1 contiene la siguiente cadena de texto XML:

<catalogo>
  <libro id="bk101">
    <autor>Gambardella, Matthew</autor>
    <titulo>XML Developer's Guide</titulo>
    <genero>Computer</genero>
    <precio>44.95</precio>
  </libro>
  <libro id="bk102">
    <autor>Ralls, Kim</autor>
    <titulo>Midnight Rain</titulo>
    <genero>Fantasy</genero>
    <precio>5.95</precio>
  </libro>
</catalogo>

Para extraer los títulos de todos los libros, podemos usar la siguiente fórmula. La expresión XPath "//titulo" busca todos los elementos llamados «titulo» en cualquier nivel del documento XML.

=XMLFILTRO(A1; "//titulo")

Resultado (se desbordará en celdas adyacentes si se usa una versión de Excel con matrices dinámicas):

XML Developer’s Guide
Midnight Rain

Ejemplo 2: Extraer un dato específico usando un atributo

Usando el mismo XML de la celda A1, si queremos obtener el género del libro cuyo atributo id es «bk102», podemos usar una expresión XPath que filtre por ese atributo.

=XMLFILTRO(A1; "//libro[@id='bk102']/genero")

Resultado:

Fantasy

Ejemplo 3: Uso con la función SERVICIOWEB

La función XMLFILTRO se combina frecuentemente con SERVICIOWEB para extraer datos directamente de una URL que devuelve XML. Por ejemplo, para obtener el último valor del Euro con respecto al Dólar de un feed RSS del Banco Central Europeo (la URL es un ejemplo).

=XMLFILTRO(SERVICIOWEB("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"); "//*[@currency='USD']/@rate")

Esta fórmula primero obtiene el XML de la URL y luego busca cualquier elemento que tenga un atributo currency igual a ‘USD’, devolviendo el valor de su atributo rate. El resultado será el tipo de cambio actual.

Observaciones

Es fundamental que el texto en el argumento xml sea un XML válido y bien formado. Un solo error de sintaxis, como una etiqueta sin cerrar, provocará que la función devuelva un error.

Las expresiones XPath son sensibles a mayúsculas y minúsculas. Por ejemplo, "//Libro" es diferente de "//libro".

Si la consulta XPath encuentra múltiples coincidencias, y estás usando una versión de Excel compatible con matrices dinámicas (como Microsoft 365), el resultado se «desbordará» automáticamente en las celdas contiguas. En versiones anteriores, solo se mostrará el primer resultado y la fórmula deberá introducirse como una fórmula de matriz con Ctrl+Shift+Enter.

Errores comunes

  • #¡VALOR!: Se produce si el argumento xml no es un XML válido o si el argumento xpath contiene errores de sintaxis o no es una expresión XPath válida.
  • #N/A: Se produce cuando la expresión xpath es válida pero no encuentra ninguna coincidencia en el XML.

Disponibilidad por versión de Excel

La función XMLFILTRO está disponible en Excel 2013 y versiones posteriores, incluyendo Microsoft 365, Excel para la web y Excel para Mac.

Compatibilidad

Software Compatibilidad Notas Alternativa
Microsoft Excel ✔️ Disponible desde Excel 2013.
Google Sheets No existe la función XMLFILTRO como tal. La funcionalidad se consigue con IMPORTXML, que combina la obtención de datos y el filtrado.
LibreOffice Calc ✔️ Funciona de manera similar a Excel.
OpenOffice Calc No disponible.
WPS Office Spreadsheets No disponible.
Apple Numbers No disponible.

Funciones Relacionadas

  • SERVICIOWEB: Recupera datos de un servicio web en Internet o una intranet. Es el complemento perfecto para XMLFILTRO, ya que proporciona el contenido XML a analizar.
  • CODIFICARURL: Devuelve una cadena de texto codificada para ser usada en una URL, útil para construir URLs dinámicas para usar con SERVICIOWEB.

Ver también...