Guia do Excel

FiltroXML Excel

Como usar a função FiltroXML no Excel em duas situações. Consultando webservice através da função Serviçoweb e separando dados de células.

MR
Marcos Rieper

Especialista em Excel

Atualizado em 08 de julho de 2026 Publicado em 16 de março de 2022 3 min de leitura

Veja como funciona a função FiltroXML Excel.

No artigo nós mostramos duas formas de a utilizar, para junto com a função serviçoweb retornar dados da web e também com um exemplo de como fazer "split", texto para colunas, dividir dados de uma célula separados por delimitadores em várias células.

Material gratuito

Planilha de Controle Financeiro no Excel

Tenha um controle bonito e completo do seu financeiro.

  • Categorias e subcategorias já configuradas
  • Planilhas separadas por tabela (configuração, lançamentos, resumo)
  • Personalize com suas próprias categorias e ícones

Baixe grátis — receba o link no seu e-mail

FiltroXML e ServiçoWEB Consultar WebService no Excel

No Excel há uma função chamada ServiçoWeb, ela permite que sejam retornados dados de um webservice de uma forma muito simples.

O webservice no nosso exemplo é de um site chamado http://republicavirtual.com.br/web_cep.php?cep=89201280, mas poderia ser também o viacep.com.br/ws/01001000/xml/.

Estes links acima retornam os dados de um endereço a partir do CEP informado.

Este retorno vem em formato XML.

Podemos usar a função serviçoweb do Excel então para retornar, veja um exemplo:

=SERVIÇOWEB("http://republicavirtual.com.br/web_cep.php?cep=89201280")

No exemplo acima a fórmula faz uma consulta direta do cep 89201280 no republicavirtual.

Note que é passado apenas o endereço do site e o CEP.

O retorno que se tem então é:

<?xml version="1.0" encoding="iso-8859-1" ?>
<webservicecep>
<resultado>1</resultado>
<resultado_txt>sucesso - cep completo</resultado_txt>
<uf>SC</uf>
<cidade>Joinville</cidade>
<bairro>Centro</bairro>
<tipo_logradouro>Travessa</tipo_logradouro>
<logradouro>Sergipe</logradouro>
</webservicecep>

No Excel ele parecerá estar em uma linha só.

Como pode notar os dados estão ali separados por tags, como por exemplo <uf> e </uf>.

Isso significa que a informação entre estas duas tags é a UF, a de cidade está em <cidade> e <cidade> e assim por diante.

Para separar estes dados utilizamos então a função chamada FiltroXML.

Ela permite que realizemos a extração dos dados do XML que estão entre as tags.

Veja o exemplo de aplicação da ServiçoWeb e da FiltroXML em conjunto:

=FILTROXML(SERVIÇOWEB("http://republicavirtual.com.br/web_cep.php?cep=89201280");"//uf")

Perceba que ela tem dois parâmetros:

=FILTROXML(xml;xpath)

No primeiro passamos o XML, que é a informação do retorno do webservice e em xpath passamos usando // e a tag que desejamos, por exemplo //uf.

Importante, tem que ser escrito da mesma forma o nome da tag, minúsculo e maiúsculo porque é case sensitive esta função.

Por fim, montamos então a fórmula seguinte:

=FILTROXML(SERVIÇOWEB("http://republicavirtual.com.br/web_cep.php?cep="&$B8);"//"&SUBSTITUIR(MINÚSCULA(C$7);" ";"_"))

Nela usamos também a célula do cabeçalho aonde tem o nome do campo que desejamos retornar e usamos o substituir para trocar os espaços por _ conforme o retorno que temos do xml.

filtroxml

Ao aplicar a fórmula em todas as colunas temos então:

filtroxml excel

FiltroXML para Dividir Texto Separado por Vírgulas

No outro exemplo temos então a separação dos dados por ponto e vírgula em uma célula e queremos que estes dados sejam separados em outras células.

Veja que na coluna Lista temos dados de texto separados por ponto e vírgula, aonde temos nomes.

Queremos que estes nomes venham para as colunas 1, 2, 3, 4, 5 da tabela.

Para isso podemos fazer uso da função FiltroXML, veja o exemplo.

O FiltroXML só funciona com tags, como vimos antes, por exemplo <a> e </a> e <b> e </b>.

Por isso o nosso objetivo inicial é converter o texto abaixo:

marcos;henrique;thiago;josé

em:

<a><b>marcos</b><b>henrique</b><b>thiago</b><b>josé</b></a>

Porque com os dados neste formato conseguiremos extrair as informações.

Então para isso usamos a função abaixo inicialmente:

"<a><b>&SUBSTITUIR($B8;";";"</b><b>")&"</b></a>"

Com isso temos então a conversão dos dados para o formato que desejamos.

E após isso usamos a função FiltroXML para separar os dados como fizemos antes, separando por //b.

E também usamos o ÍNDICE parar retornar a posição desejada:

=SEERRO(ÍNDICE(FILTROXML("<a><b>"&SUBSTITUIR($B8;";";"</b><b>")&"</b></a>";"//b");C$7);"")

A função índice permite então que retornemos o primeiro tag, segundo, terceiro, quarto, etc.

Pegamos então a célula C7, C8, C9... que tem estes números e aplicamos na função acima.

E como resultado temos então:
filtroxml excel

Download

Clique no botão abaixo para realizar o  download da planilha de filtroxml Excel, com exemplo de dados:

Download — baixe aqui: FiltroXML Excel
FiltroXML Excel96 KB · Excel 2010 ou superiorPreencha seus dados para receber o link de download no seu e-mail.

Este conteúdo foi útil?

Continue lendo