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:
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Ć:
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:
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:
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:
Para ampliar horizontalmente o rango resultante, usamos a funciĆ³n estĆ”ndar TRANSP (TRANSPOSICIĆN), envolvendo a nosa fĆ³rmula nela:
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:
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