El procedimiento habitual sería crear un nombre definido que se refiera a la columna que contiene los nombres de los clientes. El problema es que los nombres se repiten y lo queremos es una liksta de valores únicos.
El primer post, del año 2006, presentaba una solución compleja con fórmulas. Hasta tal punto compleja que publiqué un post adicional para explicar el funcionamiento de esta fórmulas.
El segundo post, del año 2011, presentaba una solución tal vez más elegante pero también compleja, incluyendo el uso de Vba (macros).
Usando Power Query podemos construir una solución más sencilla y ésto es lo que mostraré en este post.
El escenario:
- una hoja que contiene una tabla con datos de ventas;
- una hoja donde queremos queremos construir una reporte sencillo: una celda que contiene el nombre del cliente, que se elige de una validación de datos y un celda donde calculamos las ventas del cliente com SUMAR.SI, basándonos en el nombre del cliente seleccionado.
donde la celda C3 contiene la fórmula
=SUMAR.SI(tbl_Sales2016[Cliente],B3,tbl_Sales2016[Monto])
Primer paso: crear una consulta en el Power Query para generar una lista de valores únicos ordenados alfabéticamente.
Segundo paso: crear un nombre definido que se refiera al rango de los nombres de los clientes y crear la lista desplegable con validación de datos.
La gran ventaja de este modelo sobre las soluciones anteriores es que una vez construida la consulta sólo tendremos que procuparnos de actualizar la consulta cada vez que agreguemos o quitemos filas en la tabla de datos (clientes nuevos o clientes que dejan de estar en a lista).
La desventaja es que tenemos que actualizar la consulta! Es decir, tendremos que confiar que el usuario no se olvide de hacerlo.
Podemos evitar este inconveniente creando un evento de manera que cada vez que el usuario sale de la hoja "bd" la consulta se actualice. En el módulo del editor de Vb de la hoja "bd" creamos este evento Worksheet_Deactivate
De esta manera nos aseguramos que la lista deplegable se actualizará con cada cambio en la tabla de datos.
Que ahorro de tiempo te genera Power Query, excelente... Saludos.
ResponderBorrarHola Jorge,
ResponderBorrarEn "Propiedades de conexión" se puede fijar una actualización automática con un mínimo de 1 minuto, de esta forma evitas el uso de macros. Sería mejor algún tipo de actualización en segundo plano por eventos, pero, o no existe, o yo no lo he encontrado.
Como siempre, gracias por tu blog.
Daniel
Buenas tardes Maestro... Como siempre, uno de esos post de los que salvan el día, que genialidad, muchas gracias.
ResponderBorrar