PIVOTARPOR: cadenas vacías y orden cronológico mensual

Juan trae dos problemas de PIVOTARPOR el mismo día, ambos muy prácticos y con soluciones elegantes de la comunidad.

Problema 1: cadenas vacías que impiden operar

Juan tiene una tabla de proyectos con columnas Proyecto, Tipo (Budget/Actual) e Importe. Al pivotar con PIVOTARPOR, cuando un proyecto no tiene valor de Budget, la celda resultante no queda vacía sino con una cadena de texto vacía "". Esto hace que cualquier operación aritmética posterior (resta Actual - Budget) devuelva #VALOR!.

El fichero adjunto muestra el problema: Proyecto1 tiene Actual (8) y Budget (4), pero Proyecto2 solo tiene Actual (3). Al intentar =LAMBDA(x;y;x-y)(I7:I8;J7:J8), falla porque J8 es "", no 0.

La comunidad propone varias soluciones:

John resuelve el problema directamente en el PIVOTARPOR, multiplicando por -1 elevado a una condición para invertir el signo del Budget:

``
=PIVOTARPOR(C6:C194; D6:D194; -1^(D6:D194="Budget")*E6:E194; SUMA)
`

Así el total ya sale como Actual - Budget sin necesidad de operar después. Para la resta por separado, propone usar N(+x) que convierte cadenas vacías a cero:

`
=LAMBDA(x;y;N(+x)-N(+y))(I7:I8;J7:J8)
`

Nacho usa el doble negativo -- dentro de la LAMBDA para forzar la conversión a número: LAMBDA(x;y;(--x)-(--y)).

Alejandro envuelve todo el PIVOTARPOR en un LET con SI al final para limpiar los vacíos:

`
=LET(
_m; PIVOTARPOR(APILARH(C6:C194); D6:D194;
SI(D6:D194="Budget"; -E6:E194; E6:E194); SUMA;; 1;; 1);
SI(_m=""; 0; _m)
)
`

Problema 2: PIVOTARPOR mensual con orden cronológico

Por la noche, Juan vuelve con otro reto: quiere un resumen mensual con PIVOTARPOR donde los meses aparezcan ordenados cronológicamente (Ene, Feb, Mar...) en vez de alfabéticamente.

Leo lo clava con una sola fórmula usando TEXTO con formato dual para crear una clave de ordenación invisible:

`
=EXCLUIR(
PIVOTARPOR(
A5:A193;
APILARH(TEXTO(C5:C193; {"mm"\"e-mmm"}); B5:B193);
D5:D193;
SUMA;; 1;; 0
);
1
)
`

El truco está en TEXTO(fecha;{"mm"\"e-mmm"}): genera dos columnas, una con el número de mes ("mm" → "01", "02"...) para que PIVOTARPOR ordene correctamente, y otra con el nombre abreviado ("e-mmm" → "e-ene", "e-feb"...) para mostrar. Después EXCLUIR(...;1)` elimina la columna numérica auxiliar.

Juan reacciona entusiasmado: "perfecta!!! Al último paso no llego ni en 100 vidas" 😄

Más contenido de Excel en InflueXcel