Tabla de gastos por categoría del mes actual, ordenada de mayor a menor
=QUERY(Gastos!A:J,
"SELECT C, SUM(E)
WHERE MONTH(A)+1 = "&MONTH(TODAY())&
" AND YEAR(A) = "&YEAR(TODAY())&
" GROUP BY C
ORDER BY SUM(E) DESC
LABEL C 'Categoría', SUM(E) 'Total gastado'",1)
QUERY_RUBROS_CON_SUBCATEGORIA
Desglose por categoría L1 Y subcategoría, con porcentaje del total
=QUERY(Gastos!A:J,
"SELECT C, D, SUM(E), COUNT(E)
WHERE MONTH(A)+1 = "&MONTH(TODAY())&
" AND YEAR(A) = "&YEAR(TODAY())&
" GROUP BY C, D
ORDER BY C ASC, SUM(E) DESC
LABEL C 'Categoría', D 'Subcategoría',
SUM(E) 'Total', COUNT(E) '# Transacciones'",1)
SUMPRODUCT_CATEGORIA_MES
Total de UNA categoría específica en el mes actual (usa en Dashboard)
Filtra por mes y año seleccionados en celdas — ideal para dashboard interactivo
'--- En CONFIG!A1 pon el mes (1-12), en CONFIG!A2 el año ---=QUERY(Gastos!A:J,
"SELECT C, SUM(E)
WHERE MONTH(A)+1 = "&CONFIG!A1&
" AND YEAR(A) = "&CONFIG!A2&
" AND E IS NOT NULL
GROUP BY C
ORDER BY SUM(E) DESC
LABEL C 'Categoría', SUM(E) 'Total'",1)
QUERY_RANGO_FECHAS
Filtra entre dos fechas específicas (ej. quincena, trimestre)
'--- CONFIG!B1 = fecha inicio, CONFIG!B2 = fecha fin ---=QUERY(Gastos!A:J,
"SELECT C, D, SUM(E)
WHERE A >= date '"&TEXT(CONFIG!B1,"yyyy-mm-dd")&"'
AND A <= date '"&TEXT(CONFIG!B2,"yyyy-mm-dd")&"'
GROUP BY C, D
ORDER BY SUM(E) DESC
LABEL SUM(E) 'Total'",1)
FILTER_CATEGORIA_ESPECIFICA
Lista todos los gastos de una categoría, con fecha y descripción
=QUERY(Gastos!A:J,
"SELECT A, B, D, E, F
WHERE C = '"&CONFIG!C1&"'
AND MONTH(A)+1 = "&CONFIG!A1&
" AND YEAR(A) = "&CONFIG!A2&
" ORDER BY A DESC
LABEL A 'Fecha', B 'Descripción', D 'Subcategoría',
E 'Monto', F 'Método de pago'",1)
'--- CONFIG!C1 = nombre de la categoría a filtrar ---
QUERY_PRESUPUESTO_VS_REAL
Compara presupuesto vs gasto real con semáforo automático
Los 10 gastos más altos del mes, con categoría y descripción
=QUERY(Gastos!A:J,
"SELECT A, B, C, D, E, F
WHERE MONTH(A)+1 = "&MONTH(TODAY())&
" AND YEAR(A) = "&YEAR(TODAY())&
" ORDER BY E DESC
LIMIT 10
LABEL A 'Fecha', B 'Descripción', C 'Categoría',
D 'Subcategoría', E 'Monto', F 'Pago'",1)
GASTO_MAYOR_CATEGORIA
¿Qué categoría se lleva más dinero este mes?
'--- Devuelve el nombre de la categoría con mayor gasto ---=INDEX(
QUERY(Gastos!A:J,
"SELECT C, SUM(E)
WHERE MONTH(A)+1="&MONTH(TODAY())&
" GROUP BY C
ORDER BY SUM(E) DESC
LIMIT 1",0),1,1)
'--- Devuelve el monto ---=INDEX(
QUERY(Gastos!A:J,
"SELECT C, SUM(E)
WHERE MONTH(A)+1="&MONTH(TODAY())&
" GROUP BY C ORDER BY SUM(E) DESC LIMIT 1",0),1,2)
FRECUENCIA_GASTOS_SEMANA
Cuántas transacciones por día de la semana (para ver patrones)
=QUERY(Gastos!A:E,
"SELECT DAYOFWEEK(A), COUNT(E), SUM(E)
WHERE MONTH(A)+1 = "&MONTH(TODAY())&
" GROUP BY DAYOFWEEK(A)
ORDER BY DAYOFWEEK(A) ASC
LABEL DAYOFWEEK(A) 'Día semana',
COUNT(E) '# Gastos', SUM(E) 'Total'",1)
TENDENCIA_12_MESES
Evolución de ingresos, gastos y ahorro mes a mes (últimos 12 meses)
'--- Ingresos por mes ---=QUERY(Ingresos!A:F,
"SELECT YEAR(A), MONTH(A)+1, SUM(F)
WHERE A IS NOT NULL
GROUP BY YEAR(A), MONTH(A)
ORDER BY YEAR(A) ASC, MONTH(A) ASC
LABEL YEAR(A) 'Año', MONTH(A)+1 'Mes', SUM(F) 'Ingresos'",1)
'--- Gastos por mes ---=QUERY(Gastos!A:E,
"SELECT YEAR(A), MONTH(A)+1, SUM(E)
WHERE A IS NOT NULL
GROUP BY YEAR(A), MONTH(A)
ORDER BY YEAR(A) ASC, MONTH(A) ASC
LABEL YEAR(A) 'Año', MONTH(A)+1 'Mes', SUM(E) 'Gastos'",1)
VARIACION_VS_MES_ANTERIOR
Cuánto cambió cada categoría vs el mes pasado
'--- Mes actual ---=SUMPRODUCT(
(MONTH(Gastos!A2:A5000)=MONTH(TODAY()))*
(YEAR(Gastos!A2:A5000)=YEAR(TODAY()))*
(Gastos!C2:C5000=A2)*
Gastos!E2:E5000)
'--- Mes anterior ---=SUMPRODUCT(
(MONTH(Gastos!A2:A5000)=MONTH(EDATE(TODAY(),-1)))*
(YEAR(Gastos!A2:A5000)=YEAR(EDATE(TODAY(),-1)))*
(Gastos!C2:C5000=A2)*
Gastos!E2:E5000)
'--- Variación % ---
=(mes_actual - mes_anterior) / mes_anterior * 100
DASHBOARD_RESUMEN_COMPLETO
Una sola fórmula que genera el resumen ejecutivo completo del mes
'=== BLOQUE 1: KPIs principales (pega en Dashboard!B2) ====QUERY(
{Ingresos!A:F;Gastos!A:F},
"SELECT Col1, SUM(Col6)
WHERE MONTH(Col1)+1="&MONTH(TODAY())&
" GROUP BY Col1 LIMIT 1",0)
'=== BLOQUE 2: Score financiero automático ====MIN(100,MAX(0,
(Tasa_Ahorro/30*30)+
((1-Util_TC)*20)+
(MIN(Fondo_Emergencia_Meses/6,1)*25)+
(IF(DTI<=0.36,25,MAX(0,25-(DTI-0.36)*50)))))
'=== BLOQUE 3: Alerta días al corte TC (pega en Dashboard!D5) ====ARRAYFORMULA(
IF(Tarjetas!A2:A10<>"",
"⏰ Corte "&Tarjetas!A2:A10&": "&
IF(DAY(TODAY())<=Tarjetas!E2:E10,
Tarjetas!E2:E10-DAY(TODAY()),
EOMONTH(TODAY(),0)+Tarjetas!E2:E10-TODAY())&" días",
""))
NAMED_RANGES_RECOMENDADOS
Define estos rangos con nombre en Google Sheets para que las fórmulas sean legibles