🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Función PIVOTBY en Excel — Crea una tabla dinámica con una fórmula

|

Función PIVOTBY en Excel — Crea una tabla dinámica con una fórmula

ResumenPIVOTBY(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, no SUM()). 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 PIVOTBY supera a una tabla dinámica — y dónde una tabla dinámica sigue ganando
  • Las trampas: el orden de los campos, SUM() frente a SUM y #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