Dividir texto adhesivo coa funciĆ³n FILTER.XML

Contidos

MĆ”is recentemente, discutimos o uso da funciĆ³n FILTER.XML para importar datos XML de Internet, a principal tarefa para a que, de feito, estĆ” destinada esta funciĆ³n. Ao longo do camiƱo, con todo, apareceu outro uso inesperado e fermoso desta funciĆ³n: para dividir rapidamente o texto pegajoso en celas.

Digamos que temos unha columna de datos como esta:

Dividir texto adhesivo coa funciĆ³n FILTER.XML

Por suposto, por comodidade, gustarĆ­ame dividilo en columnas separadas: nome da empresa, cidade, rĆŗa, casa. Podes facelo de varias maneiras:

  • Usar Texto por columnas dende a pestana Data (Datos: texto en columnas) e vai tres pasos Analizador de texto. Pero se os datos cambian maƱƔ, terĆ”s que repetir todo o proceso de novo.
  • Cargue estes datos en Power Query e divĆ­deos alĆ­, e despois cĆ”rgueos de novo na folla e, a continuaciĆ³n, actualice a consulta cando cambien os datos (o que xa Ć© mĆ”is sinxelo).
  • Se precisa actualizar sobre a marcha, pode escribir algunhas fĆ³rmulas moi complexas para atopar comas e extraer o texto entre elas.

E podes facelo con mĆ”is elegancia e utilizar a funciĆ³n FILTER.XML, pero que ten que ver con iso?

A funciĆ³n FILTER.XML recibe como argumento inicial un cĆ³digo XML: texto marcado con etiquetas e atributos especiais, e despois analĆ­zao nos seus compoƱentes, extraendo os fragmentos de datos que necesitamos. O cĆ³digo XML adoita ser algo asĆ­:

Dividir texto adhesivo coa funciĆ³n FILTER.XML

En XML, cada elemento de datos debe estar encerrado en etiquetas. Unha etiqueta Ʃ un texto (no exemplo anterior Ʃ xestor, nome, beneficio) encerrado entre corchetes angulares. As etiquetas sempre veƱen por parellas: abrƭndose e pechando (cunha barra inclinada engadida ao principio).

A funciĆ³n FILTER.XML pode extraer facilmente o contido de todas as etiquetas que necesitamos, por exemplo, os nomes de todos os xestores, e (o mĆ”is importante) mostralos todos Ć” vez nunha lista. Polo que a nosa tarefa Ć© engadir etiquetas ao texto fonte, convertĆ©ndoo en cĆ³digo XML axeitado para a sĆŗa posterior anĆ”lise mediante a funciĆ³n FILTER.XML.

Se tomamos como exemplo o primeiro enderezo da nosa lista, necesitaremos convertelo nesta construciĆ³n:

Dividir texto adhesivo coa funciĆ³n FILTER.XML

Chamei Ć” etiqueta global de apertura e peche de todo o texto t, e as etiquetas que enmarcan cada elemento son s., pero podes usar calquera outra denominaciĆ³n, non importa.

Se eliminamos sangrĆ­as e saltos de liƱa deste cĆ³digo, completamente, por certo, opcional e engadido sĆ³ para claridade, entĆ³n todo isto converterase nunha liƱa:

Dividir texto adhesivo coa funciĆ³n FILTER.XML

E xa se pode obter con relativa facilidade do enderezo de orixe substituĆ­ndo as comas por un par de etiquetas utilizando a funciĆ³n SUBSTITUTO (SUBSTITUTO) e pegando co sĆ­mbolo & ao comezo e ao final das etiquetas de apertura e peche:

Dividir texto adhesivo coa funciĆ³n FILTER.XML

Para ampliar horizontalmente o rango resultante, usamos a funciĆ³n estĆ”ndar TRANSP (TRANSPOSICIƓN), envolvendo a nosa fĆ³rmula nela:

Dividir texto adhesivo coa funciĆ³n FILTER.XML

Unha caracterĆ­stica importante de todo este deseƱo Ć© que na nova versiĆ³n de Office 2021 e Office 365 con soporte para matrices dinĆ”micas, non son necesarios xestos especiais para a entrada; basta con introducir e facer clic en Entrar ā€“ a propia fĆ³rmula ocupa o nĆŗmero de celas que necesita e todo funciona cun estrondo. Nas versiĆ³ns anteriores, onde aĆ­nda non habĆ­a matrices dinĆ”micas, primeiro terĆ”s que seleccionar un nĆŗmero suficiente de celas baleiras antes de introducir a fĆ³rmula (pode con unha marxe) e despois de crear a fĆ³rmula, prema o atallo de teclado Ctrl+Desprazarse+Entrarpara introducilo como fĆ³rmula matricial.

PĆ³dese usar un truco similar ao separar o texto pegado nunha cela mediante un salto de liƱa:

Dividir texto adhesivo coa funciĆ³n FILTER.XML

A Ćŗnica diferenza co exemplo anterior Ć© que en lugar dunha coma, aquĆ­ substituĆ­mos o carĆ”cter invisible de salto de liƱa Alt + Intro, que se pode especificar na fĆ³rmula usando a funciĆ³n CHAR co cĆ³digo 10.

  • As sutilezas de traballar con saltos de liƱa (Alt + Intro) en Excel
  • Divide o texto por columnas en Excel
  • SubstituĆ­ndo texto por SUBSTITUTE

Deixe unha resposta