lunes, agosto 05, 2019

Extraer valores de columnas alfanuméricas con Power Query

En la nota anterior vimos con que facilidad Power Query nos permite extraer valores numéricos de una cadena de texto mixta (letras y números).
En los casos que analizamos el texto a dividir o de donde debíamos extraer los valores, tenía cierto orden; letras y luego números o números y luego letras.
Anticipándome a mis avisados lectores propuse la situación en la cual el texto a dividir, que contiene tanto números como letras, no sigue ningún patrón u orden, como en este ejemplo



Para casos como éste Dividir columna no nos sirve. Pero Power Query no nos deja librados a nuestra amarga suerte; en su baúl de herramientas tenemos Columna a partir de los ejemplos, en el tab Agregar columna 


En el editor de PQ seleccionamos la columna de donde queremos extraer los números (en nuestro caso no hace falta ya que hay una única columna) y accionamos Columna a partir de ejemplo; veremos ésto



Sobre la derecha del editor se abre una columna que por definición lleva el nombre "Columna1". Enseguida notamos que la primer fila de esta columna esta señalada con un fondo verde. Arriba, a la izquierda, vemos "Escriba valores de ejemplo para crear una nueva columna" y vamos a prestar especial atención a Ctrl+Enter para aplicar.
En la fila señalada de "Columna1" introducimos la cadena de números incluida en el texto de la primer fila de la tabla, es decir, "123". A partir de este "ejemplo" Power Query va a tratar de establecer el patrón para extraer los valores numéricos del resto de las filas. Fijémonos en el resultado



Ahora en la segunda fila de la columna de ejemplo vemos "DEF456KLM". Por lo visto Power Query todavía no "entiende" lo que queremos hacer así que vamos a agregar un segundo ejemplo y en la fila señalada introducimos "456" (los valores numéricos de la segunda fila de la tabla)


¡Eureka! En la columna del ejemplo podemos ver que Power Query extrae los valores numéricos de cada fila aun si éstos están intercalados entre letras..
Todo los que nos queda por hacer es apretar Aceptar

De la misma manera podemos separar las letras de los números,




Para concluir cargamos la consulta a una hoja de Excel



Es muy probable que no estemos conformes con los encabezamientos de las nuevas columnas que Power Query pone por definición. Podemos agregar un paso aplicado más a nuestra consulta y cambiarlos manualmente. También podemos hacer algo más "elegante" y modificar la función que Power Query utilizó en el paso aplicado. Para ésto vamos a volver al editor, seleccionar el paso aplicado que queremos modificar y fijarnos qué aparece en la barra de las fórmulas



Aún sin tener conocimientos del lenguaje M, entendemos que Power Query utiliza la función Table.AddColumn donde el segundo parámetro es el nombre de la columna que vamos a agregar (el primer parámetro es el nombre del paso aplicado anterior). El nombre por definición, "Caracteres guardados", aparece entre comillas. En su lugar vamos a escribir el nombre que queremos que aparezca en el encabezamiento de la columna, por ejemplo, "Valores numéricos"



Apretamos Enter y seleccionamos el próximo paso; nuevamente cambiamos el nombre de la columna por "Letras", apretamos enter y volvemos a cargar la consulta a la hoja de Excel




2 comentarios:

  1. Gracias maestro, coincidimos con la forma de extraer en tan solo 3 o 4 pasos. La inteligencia de las consultas. Estoy al pendiente de sus temas-Saludos.

    ResponderBorrar
  2. Muchas gracias por compartir tus conocimientos, es excelente.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.