Escolar Documentos
Profissional Documentos
Cultura Documentos
Query
LUNES, OCTUBRE 09, 2017
Hace varios días que venía dándole vueltas a la idea de mostrar cómo crear una tabla de
A diferencia de los ejemplos anteriores de Power Query que he mostrado en este blog, en
este caso no partimos de una fuente de datos, de la hoja o remota, que cargamos a una
consulta en forma de tabla. De hecho, tenemos que crear la tabla de amortización "de la
nada". Es decir, una vez definidos los parámetros iniciales (monto del préstamo, tasa de
interés, número de cuotas) tenemos que crear una tabla en Power Query que luego
Para crear la tabla "de la nada" tendremos que usar funciones del lenguaje M (el lenguaje
del Power Query). En este post no entraré en los detalles técnicos de M (objetos,
Y ahora, manos a la obra! Empezamos por definir los tres parámetros iniciales: monto del
(Pagos). Los ingresamos en celdas de una hoja y creamos nombres definidos que se
refieran a esas celdas. La forma más rapida de hacerlo es seleccionando el rango y usando
Power Query no carga el rango A1:B3 a la consulta, sino sólo la celda del nombre definido
Power Query cambia el tipo de datos s Entero automáticamente. Con un clic del botón
down)
Vamos a Inicio, cerramos y cargamos como "sólo conexión"
Para crear la tabla de amortización empezamos por crear una consulta en blanco (Desde
otras fuentes-Consulta en blanco). En la venta del editor pegamos este código, que paso
a explicar
let
P=Capital,
i=Interes,
n=Pagos,
Mes=Table.ExpandRecordColumn(
Table.FromList(
List.Generate(
()=>[Counter=1],
each [Counter]<=n,
each [Counter=[Counter]+1]
),
Splitter.SplitByNothing(), {"Balance Inicial"},
null, ExtraValues.Error),"Balance Inicial", {"Counter"}, {"Mes"}),
Las primeras tres líneas crean las variables que reciben el valor de las consultas de los
parámetros. Luego creamos la columna "Mes" (el número de cuota) para lo cual anidamos
List.Genetate: crea una lista (columna) con los números de mes; empieza con [Counter] = 1
Table.FromList: convierta la lista que acabamos de generar en Tabla de manera que podamos
parte del capital en cada pago como tenemos en Excel (PAGO, PAGO.INT, PAGOPRIN),
así que tendremos que hacer los cálculos con operadores. Por ejemplo, para calcular el
P*(Number.Power(1+(i/12),n)-Number.Power(1+(i/12),[Mes]-
1))/(Number.Power(1+(i/12),n)-1)
Para crear la columna podemos usar el menú en la interfaz del usuario (Agregar Columna-
La descargamos en la hoja donde pusimos los parámetros y nuestro modelo está listo
Este modelo es absolutamente dinámico. Todo lo que hay que hacer es cambiar los
, 0 comments
No sé cuántos de mis lectores usan o conocen la opción "Utilice una fuente de datos
tenía que construir un reporte con una tabla dinámica, pero la tabla con los datos de
origen tenía varios cientos de miles de filas, número que iba incrementándose cada mes.
A corto plazo la base de datos superaría el millón de filas, más allá de la capacidad de
Las ventajas de crear una conexión sin importar físicamente los datos a una hoja de Excel
son evidentes:
cuando hay cambios en la base de datos (nuevos registros, por ejemplo) basta con apretar el
podemos desconectar las tablas dinámicas creadas del origen y así proteger datos discretos.
Para crear una tabla dinámica con esta técnica empezamos con una hoja vacía. Abrimos
conexión".
Si la conexión que buscamos no aparece en la lista de conexiones disponibles, usamos el
botón "Examinar en busca de más" (en la parte inferior izquierda del formulario). En este
ejemplo voy a crear una conexión a la base de datos Northwind que puede estar en mi
veremos l plantilla de la tabla dinámica vacía y la lista de campos que podemos utilizar
físicamente en la hoja. Por ejemplo, este reporte de ventas donde usamos el campe de
de este ejemplo peso 132 KB. Si hubiéramos importado los datos a una hoja del cuaderno
La otra ventaja de este método surge cuando trabajamos con datos que requieren
discreción. Siguiendo con nuestro ejemplo supongamos que generamos un reporte para
cada agente de ventas (que hacemos con facilidad con la técnica que muestro en este
post) pero no queremos que puedan ver los resultados de los otros colegas.
Una posibilidad es copiar y pegar los datos en otra hoja con la opción "sólo valores". Pero
al pegar los datos los formatos de la tabla desaparecen (podemos usar el tip que muestro
Excel transforma la tabla dinámica en una matriz de valores, sin fórmulas, sin conexiones
, 4 comments
Como ya hemos mostrado en este blog, hay muchas formas de crear listas desplegables
en Excel:
colección de formularios;
(macros).
Todas las técnicas pueden verse en mi e-book "Listas Desplegables - la guía JLD".
Uno de los requerimientos de los usuarios es la posibilidad de reducir los valores que
aparecen en la lista de acuerdo a algún criterio. Supongamos que tenemos una lista de
varios cientos de productos y queremos ver sólo aquellos que contengan la palabra
En este post voy a mostrar cómo hacerlo usando un ListBox para crear la lista desplegable
y un cuadro de texto para introducir el texto del criterio de búsqueda. Todo ésto lo
Esta captura de pantalla muestra como funciona nuestro modelo. Cada vez que
datos en las hojas de Excel, tema que he tocado varias veces en este blog.
Para facilitar el código que mostramos más adelante, creamos también un nombre
# - un evento Change para el ListBox. Este evento se dispara cada vez que tecleamos
algún valor en la casilla de texto; cuando esta vacía vemos todos los valores de la lista
de precios
Si estuviéramos usando este formulario en un modelo real tendríamos que escribir código
para el botón Aceptar. Aquí estamos mostrando solamente cómo crear la lista desplegable
así que dejaremos ese código para algún post en el futuro (en caso que algunos de mis
Para activar el Userform usamos el botón "Lista de productos" al cua tiene asociado este
código
Sub listaProductos()
ufProductos.Show
End Sub