FiltroXML Excel
Especialista em Excel

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.
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.

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

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.


Download
Clique no botão abaixo para realizar o download da planilha de filtroxml Excel, com exemplo de dados:
Principais recursos
Confira o que este material oferece para você.
Perguntas frequentes
O material é realmente gratuito?
Sim. O acesso é gratuito e não exige cadastro.
Preciso ter o Excel instalado?
Recomendamos o Excel 2013 ou superior para todos os recursos.
Como faço para receber atualizações?
As atualizações são automáticas dentro da própria planilha.
Funciona no Excel do Mac?
Sim, funciona no Excel para Windows e para Mac.
Funciona no celular?
É possível visualizar no app do Excel; a edição completa é no computador.
Planilhas relacionadas
Planilha de Fluxo de Caixa
R$ 89,90
Controle de Estoque
R$ 69,90
Planilha Financeira Empresarial
R$ 79,90
Dashboard Financeiro no Excel
R$ 49,90




