Cada vez que imparto un curso o una consultoría y nos ponemos a analizar los datos de la empresa, invariablemente sale la misma pregunta: “Oye Sergio, quiero saber cómo nos fue con respecto al mes anterior, ¿vendimos más o vendimos menos?”. Es una pregunta sencilla, pero si no tienes bien armado tu modelo en Power BI, la respuesta se complica. En este artículo te explico paso a paso cómo obtener la variación porcentual y la variación absoluta (en dinero) de un mes contra otro, incluso cuando cruzamos de un año al siguiente, usando una tabla calendario y unas cuantas medidas en DAX.
🎓 Certificación oficial Microsoft
¿Ya dominas Excel, pero falta un documento que lo certifique? Como centro autorizado Certiport, te preparamos para que apruebes el Examen Oficial MO-211.
CONOCE LA CERTIFICACIÓN EXCEL EXPERTCómo comparar tus ventas MES a MES y AÑO a AÑO en Power BI (Paso a Paso)
🎁 Descarga el archivo de ejemplo
Escribe tu correo electrónico para recibir gratis el archivo para practicar.
*Al enviar mi correo electrónico, acepto recibir noticias y ofertas. Puedo darme de baja en cualquier momento.
Conoce tus datos y conéctate desde Power BI
El primer paso siempre es conocer nuestros datos. En este ejemplo tengo un archivo de Excel con fechas de dos años completos (enero a diciembre), además de clientes, vendedores y el total de cada venta. Lo que quiero saber es la variación entre un mes y otro, y también entre diciembre de un año y enero del siguiente.
Antes de ir a Power BI, convierto los datos a tabla desde la ficha Insertar > Tabla y dejo el nombre Tabla1. Un truco para no andar buscando el archivo entre carpetas: en Archivo > Información das clic en Copiar ruta de acceso local, cierras el archivo y listo, ya tienes la ruta en el portapapeles.
En Power BI elijo Informe en blanco > Importar datos de Excel, pego la ruta, doy clic en Siguiente, marco Tabla1 y doy clic directamente en Cargar. Puede que te preguntes: “Sergio, ¿por qué cargas directo y no pasas por Power Query?”. Porque en este caso los datos ya están estructurados y homogéneos, no necesitamos transformarlos.
Crea la tabla calendario
Como vamos a calcular variaciones entre periodos, es decir, entre fechas, necesitamos forzosamente una tabla de fechas. En nuestro modelo no existe, así que la creamos desde Herramientas de tabla > Nueva tabla. Hay tres maneras de hacerlo:
- CALENDARAUTO: toma automáticamente las fechas de todas las tablas del modelo. No la recomiendo mucho, porque si alguna tabla tiene fechas muy antiguas o vacías, te puede generar décadas o hasta siglos de fechas.
- CALENDAR con MIN y MAX: toma la fecha más antigua y la más reciente de tu tabla, pero no años completos.
- CALENDAR con años completos: toma desde el 1 de enero del año de la primera fecha hasta el 31 de diciembre del año de la última fecha. Esta es la opción recomendada, porque hay funciones de inteligencia de tiempo en Power BI que requieren años completos en la tabla calendario.
La fórmula de la opción tres queda así:
Calendario =
CALENDAR(
DATE( YEAR( MIN( Tabla1[Fecha] ) ), 1, 1 ),
DATE( YEAR( MAX( Tabla1[Fecha] ) ), 12, 31 )
)
Fíjate bien: la función DATE funciona igual que FECHA en Excel, le pasamos año, mes y día. Para la fecha inicial tomamos el año de la fecha mínima con enero y día 1, y para la final el año de la fecha máxima con diciembre y día 31. Tip: en la barra de fórmulas usa Alt + Enter para saltar de línea y Ctrl + rueda del mouse para hacer el texto más grande.
Agrega columnas, márcala como tabla de fechas y relaciónala
Además de la fecha, necesito el año, el mes en número y el nombre del mes. Con la tabla Calendario seleccionada, voy a Nueva columna y creo estas tres:
Año = YEAR( Calendario[Date] )
Mes = MONTH( Calendario[Date] )
Nombre del mes = FORMAT( Calendario[Date], "mmm" )
Con “mmm” obtenemos el nombre del mes contraído (ene, feb, mar). Para este ejemplo me basta con esas columnas, aunque lo correcto en un modelo real es agregar todo lo que necesites: día, trimestre, semana, etc.
Después hay que decirle a Power BI que esta es oficialmente nuestra tabla de fechas: Herramientas de tablas > Marcar como tabla de fechas, elegimos la columna Date y guardamos.
Por último, la relación. En la Vista de modelo arrastro la columna Fecha de Tabla1 y la suelto sobre la columna Date de Calendario. Power BI muestra una ventana que confirma qué columna se relaciona con cuál, doy clic en Guardar y listo, ya tenemos ambas tablas conectadas.
Arma la matriz y ordena los meses correctamente
En la Vista de informe inserto un objeto visual de tipo Matriz y arrastro Nombre del mes a Filas. Aquí aparece el clásico problema: los meses salen en orden alfabético (abr, ago, dic…). La solución es seleccionar la columna Nombre del mes y en Herramientas de columnas > Ordenar por columna elegir la columna Mes, la que tiene el número. Así el nombre se sigue mostrando, pero el orden lo da el número.
Después arrastro el campo Total de Tabla1 a Valores y pongo Año arriba de Nombre del mes en Filas, para ver los dos años con sus doce meses.
Calcula la variación: medida rápida vs medidas manuales

Hay dos caminos. El primero es la medida rápida: en Inicio > Medida rápida, sección Inteligencia de tiempo, eliges Cambio mes a mes, como valor base pones el Total de Tabla1 y como fecha la columna Date de Calendario. Te da la variación porcentual en un par de clics, pero ojo, no existe una medida rápida para la variación absoluta.
Por eso conviene hacerlo de manera manual. Necesitamos cuatro medidas, que creo en Tabla1 con Nueva medida:
Total Ventas = SUM( Tabla1[Total] )
Ventas Mes Anterior =
CALCULATE( [Total Ventas], PREVIOUSMONTH( Calendario[Date] ) )
Var Moneda = [Total Ventas] - [Ventas Mes Anterior]
Var % = DIVIDE( [Var Moneda], [Ventas Mes Anterior] )
Fíjate bien que las medidas se escriben entre corchetes. CALCULATE toma el total de ventas, pero con el filtro de PREVIOUSMONTH, es decir, el mes previo según la tabla calendario. Para la variación porcentual uso DIVIDE en lugar de una división normal porque maneja la división entre cero sin marcar error.
Al agregar Var Moneda y Var % a la matriz, la variación porcentual aparece en decimales. Para corregirlo, selecciono la medida y en Herramientas de medición le aplico formato de porcentaje. Si comparas, el resultado de la medida manual es exactamente igual al de la medida rápida, con la ventaja de que ahora también tienes la variación en dinero.
Corrige el primer mes, que no tiene mes anterior
Hay un detalle que no podemos dejar pasar. En enero del primer año no existe un diciembre anterior, así que Ventas Mes Anterior está vacío y la resta devuelve las mismas ventas de enero como si fueran variación. Eso es incorrecto, ahí no debería aparecer nada.
Para corregirlo modifico la medida Var Moneda y le agrego una validación con IF:
Var Moneda =
IF(
NOT ISBLANK( [Ventas Mes Anterior] ) && HASONEVALUE( Calendario[Mes] ),
[Total Ventas] - [Ventas Mes Anterior]
)
Lo que le decimos es: si Ventas Mes Anterior no está vacío y además estamos evaluando un solo mes, entonces haz el cálculo; si no, no muestres nada. El doble ampersand (&&) sirve para evaluar que se cumplan las dos condiciones, como la función Y en Excel. Recuerda que en Power BI y en Power Pivot las funciones van en inglés.
Con este cambio, enero del primer año queda en blanco, mientras que enero del segundo año sí muestra su variación contra diciembre del año anterior. Y como Var % se calcula a partir de Var Moneda, también se corrige sola.
Ahora sí ya podemos analizar de un mes contra otro cuándo subieron o bajaron las ventas, y cuánto en dinero y en porcentaje. Para eso sirve el análisis de datos: mostrar la información clara para luego tomar decisiones.
🎓 Deztaca
Aprende Excel, Macros, Power BI y análisis de datos a fondo, con cursos desde todos los niveles, clases en vivo todas las semana, Certificado por curso y un Foro de comunidad para resolver todas tus dudas.
MIRA NUESTROS CURSOS