Resumen —
PIVOTBY(campos_fila; campos_columna; valores; función)es GROUPBY con una segunda dimensión. Dale un campo para las filas, un campo para las columnas, los valores que agregar y la agregación —=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM)— y derrama una tabulación cruzada completa: las regiones en el lateral, los meses en la cabecera, los totales en la cuadrícula y los totales generales en ambos bordes. Es una tabla dinámica hecha fórmula: se recalcula en vivo sin Actualizar, y otras fórmulas pueden apuntar a ella. Pasa la función por su nombre (SUM, noSUM()). Necesita Excel 365 (llegó en 2024–2025).
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM) ' Región (filas) x Mes (columnas), sumado
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; AVERAGE) ' la misma cuadrícula, con media
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; COUNT) ' cuántos pedidos en cada celda
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM; ; 1; ; 1) ' totales generales en ambos ejes
Todo el mundo conoce la tabla dinámica: el objeto de arrastrar y soltar que insertas,
configuras en un panel lateral y actualizas cada vez que se mueven los datos. PIVOTBY
te da la misma cuadrícula de filas por columnas — pero como una sola fórmula que vive en
la hoja y se actualiza sola. Si GROUPBY responde a «total
por una cosa», PIVOTBY responde a «total por una cosa cruzada con otra»: ventas por
región y mes, plantilla por departamento y nivel, el clásico informe matricial.
Lo que aprenderás
- El modelo mental:
PIVOTBY= GROUPBY más una dimensión de columna - Los cuatro argumentos obligatorios, y por qué las filas y las columnas no son intercambiables
- Añadir totales en ambos ejes con los dos argumentos
total_depth - Dónde
PIVOTBYsupera a una tabla dinámica — y dónde una tabla dinámica sigue ganando - Las trampas: el orden de los campos,
SUM()frente aSUMy#SPILL!
El modelo mental: GROUPBY con una segunda dimensión
GROUPBY colapsa los datos por un solo eje — una lista de grupos con un número al lado de
cada uno. PIVOTBY añade un segundo eje, convirtiendo esa lista en una matriz. Se
ejecuta la misma agregación, pero ahora se divide en dos direcciones a la vez:
=GROUPBY(C2:C1000; D2:D1000; SUM) ' Región -> una columna de totales
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM) ' Región x Mes -> una cuadrícula de totales
' └ filas └ columnas └ valores └ cómo
Ese argumento extra — campos_columna — es toda la diferencia. Todo lo que sabes de
GROUPBY (pasa la función por su nombre, se derrama, se recalcula en vivo, ordena y
totaliza mediante argumentos) se traslada tal cual. PIVOTBY no es una idea nueva que
aprender; es GROUPBY con un campo más para decir qué corre a lo ancho por arriba.
Los cuatro argumentos obligatorios
=PIVOTBY( campos_fila ; campos_columna ; valores ; función )
' por el por la qué cómo
' lateral cabecera agregar agregar
campos_fila— lo que corre hacia abajo por el borde izquierdo (Región).campos_columna— lo que corre a lo ancho por arriba (Mes).valores— los números que llenan la cuadrícula (Ventas).función— la agregación, por su nombre (SUM).
El resultado es una matriz etiquetada con ambos ejes sin duplicados y ordenados, y totales generales de forma predeterminada. Cuatro argumentos, y has reemplazado todo el flujo de Insertar tabla dinámica → arrastrar → configurar.
Las filas y las columnas no son intercambiables
El error más común con PIVOTBY es intercambiar los dos primeros argumentos y obtener una
cuadrícula técnicamente correcta pero ilegible — 40 meses en el lateral y 4 regiones a lo
ancho, o peor, el mismo campo en ambos.
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM) ' 4 regiones abajo, 12 meses a lo ancho — legible
=PIVOTBY(B2:B1000; C2:C1000; D2:D1000; SUM) ' 12 meses abajo, 4 regiones a lo ancho — transpuesto
La regla práctica que mantiene los informes legibles: el campo con menos valores
distintos va en campos_columna (a lo ancho por arriba), y el que tiene más va en
campos_fila (hacia abajo por el lateral), porque una página se desplaza hacia abajo con
comodidad pero solo muestra unas pocas columnas a lo ancho. Las regiones (pocas) a lo
ancho, las fechas o los clientes (muchos) hacia abajo. Invierte los dos y la cuadrícula
sigue calculándose — solo que se derrama en la dirección equivocada y se sale de la
pantalla.
Totales en ambos ejes
Una tabla dinámica te da totales de fila y totales de columna; PIVOTBY también, mediante
dos argumentos total_depth separados — uno para las filas y otro para las columnas:
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM; ; 1; ; 1) ' fila de total general Y columna de total general
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM; ; 0; ; 0) ' sin totales en ningún eje
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM; ; 1; ; 0) ' solo total de fila (una columna de total, sin fila de total)
El orden de los argumentos es field_headers, luego row_total_depth, luego
row_sort_order, luego col_total_depth — así que los dos totales que te importan quedan
en las posiciones 6 y 8, que es por lo que ves los puntos y coma vacíos. 1 significa
«muestra el total general», 0 significa «ocúltalo». Poder totalizar un eje pero no el
otro es algo que una tabla dinámica de verdad complica y PIVOTBY reduce a un solo
dígito.
Dónde gana PIVOTBY — y dónde sigue ganando la tabla dinámica
Este es un compromiso real, no un reemplazo, y elegir mal desperdicia tiempo en cualquier dirección.
PIVOTBY gana cuando el informe debe mantenerse vivo y conectado. Se recalcula en el
instante en que cambian los datos — sin Actualizar, sin caché obsoleta — así que es la
herramienta adecuada para un panel que se actualiza a medida que llegan los números. Como
es una fórmula, otras fórmulas pueden referenciar sus celdas, y vive en el control de
versiones y se compara (diff) como cualquier texto. No tiene panel de configuración que
configurar mal.
Una tabla dinámica clásica sigue ganando cuando quieres explorar. Arrastrar campos
entre filas y columnas sobre la marcha, soltar segmentaciones y escalas de tiempo, doble
clic en una celda para profundizar hasta las filas de origen, agrupar fechas en
trimestres con un clic derecho, o pivotar decenas de millones de filas desde el Modelo de
datos — nada de eso es para lo que sirve PIVOTBY. PIVOTBY representa un informe que ya
has decidido; una tabla dinámica es una herramienta interactiva para decidir cuál debería
ser el informe.
La línea honesta: PIVOTBY para informar, tablas dinámicas para explorar. Si el
diseño está fijado y necesita mantenerse al día, usa la fórmula. Si todavía estás hurgando
en los datos para ver qué importa, usa el objeto.
Las trampas, todas juntas
Tres fallos cubren casi cada PIVOTBY que «no funciona»:
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM()) ' MAL — pasa SUM, no SUM()
=PIVOTBY(C2:C1000; C2:C1000; D2:D1000; SUM) ' MAL — el mismo campo en filas Y columnas = un lío diagonal
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM) ' #SPILL! si alguna celda que la cuadrícula necesita está ocupada
Primero, la función es un nombre a secas — la misma regla SUM no SUM() que en
GROUPBY. Segundo, campos_fila y campos_columna deben ser campos diferentes;
pasar el mismo da una diagonal sin sentido. Tercero, PIVOTBY derrama un rectángulo
entero, así que si algo se sitúa donde la cuadrícula necesita aterrizar obtienes #SPILL!
— despeja el espacio de abajo y de la derecha, y recuerda que la cuadrícula crece a
medida que aparecen nuevos meses o regiones en los datos.
El criterio
Recurre a PIVOTBY en cuanto necesites una tabulación cruzada que se mantenga al día y
alimente el resto de la hoja — una matriz en vivo en un panel, una cuadrícula cuyas
celdas leen otras fórmulas. Reserva la tabla dinámica para la exploración manual:
segmentaciones, profundizar hasta el detalle, arrastrar y soltar, fuentes enormes del
Modelo de datos. Las reglas mecánicas que evitan los fallos habituales: menos categorías
van a lo ancho (campos_columna) y más van hacia abajo (campos_fila); la
función es un nombre a secas; y los dos argumentos total_depth (filas en la
posición 6, columnas en la posición 8) encienden y apagan los totales generales por eje.
Aprende la gramática de argumentos una vez — es solo
GROUPBY con un campo de columna — y el informe matricial
deja de ser un objeto que reconstruyes y se convierte en una fórmula que se mantiene
honesta sola.
Cómo ayuda ExcelMaster
La potencia de PIVOTBY se esconde tras un muro de argumentos posicionales con puntos y
coma de salto — los totales que quieres están en las posiciones 6 y 8, y es fácil ajustar
el que no es. Dile a ExcelMaster «ventas por región cruzadas con meses, con totales
en ambos lados» y escribe =PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM; ; 1; ; 1) con cada
punto y coma en su sitio. Pídele «intercambia las filas y las columnas» o «cuenta pedidos
en lugar de sumar ventas» y edita el argumento correcto. Y si tu cuadrícula lanza #SPILL!
o sale transpuesta, te explica qué argumento cambiar — sin adivinar cuál de once
posiciones te saltaste.
Preguntas frecuentes
¿Qué hace PIVOTBY en Excel?
PIVOTBY(campos_fila; campos_columna; valores; función) construye una tabulación cruzada:
agrupa los datos hacia abajo por las filas según un campo y a lo ancho por las columnas
según otro, agrega los valores de cada celda con función y derrama una cuadrícula
etiquetada con totales generales. Es una tabla dinámica expresada como una sola fórmula, y
se recalcula automáticamente cuando cambian los datos.
¿En qué se diferencia PIVOTBY de una tabla dinámica normal?
PIVOTBY es una fórmula viva — se actualiza al instante sin Actualizar, sus celdas
pueden ser referenciadas por otras fórmulas y no hay panel de configuración. Una tabla
dinámica clásica es un objeto interactivo: puedes arrastrar campos, añadir segmentaciones,
profundizar hasta las filas de origen y pivotar fuentes del Modelo de datos de decenas de
millones de filas. Usa PIVOTBY para informes que deban mantenerse al día; usa una tabla
dinámica para explorar.
¿Por qué PIVOTBY devuelve un error o una diagonal extraña?
Dos causas habituales. Si da un error como #CALC!, probablemente escribiste SUM() en
lugar de SUM — el argumento función es un nombre a secas. Si el resultado parece una
diagonal sin sentido, pasaste el mismo campo a campos_fila y a campos_columna; deben
ser campos diferentes. Un #SPILL! significa que algo bloquea la cuadrícula — despeja las
celdas de abajo y de la derecha.
¿Cómo añado totales de fila y de columna en PIVOTBY?
Usa los dos argumentos de profundidad de totales:
=PIVOTBY(C2:C1000; B2:B1000; D2:D1000; SUM; ; 1; ; 1). El primer 1 (posición 6) añade
una columna de total general para las filas; el segundo 1 (posición 8) añade una fila de
total general para las columnas. Pon cualquiera de los dos en 0 para ocultar ese total.
Los puntos y coma vacíos saltan field_headers y los dos argumentos de ordenación.
¿Qué versiones de Excel tienen PIVOTBY?
PIVOTBY es una función de Microsoft 365 lanzada junto a
GROUPBY a lo largo de 2024–2025 en el Canal actual. No está
en Excel 2021, 2019 ni 2016. Si =PIVOTBY(...) devuelve #NAME?, tu compilación aún no la
incluye; una tabla dinámica clásica es la alternativa.
Probado en
Probado en: Excel 365 (Windows 11) — última verificación 18-07-2026.
Guías relacionadas: Excel GROUPBY · GROUPBY y PIVOTBY — Avanzado · Excel SUMIFS · Excel FILTER · Excel UNIQUE
