Así es como se construye una que aguante.
Por qué el inventario de ropa es más complejo que el inventario genérico
La mayoría de los templates de inventario tratan el SKU como la unidad atómica. La moda no funciona así. Estás rastreando modelo → colorway → talla como una jerarquía de 3 niveles, y cada pregunta de agregación vive en un nivel distinto: ¿Cuántos Blazer Monaco nos quedan? ¿Cuántos en azul marino? ¿Cuántos en azul marino, talla 10?
Esa jerarquía tiene que estar incorporada en tu estructura de datos desde la fila 1, o vas a terminar escribiendo cadenas de VLOOKUP cada vez más retorcidas en la tercera semana.
A mayo de 2026, Google Sheets tiene un límite de 10 millones de celdas por hoja de cálculo (documentación oficial de Google). Un catálogo de 8,000 SKUs rastreado durante 52 semanas con 15 columnas de atributos llega a 6.2 millones de celdas. No es un número teórico — es la aritmética de una marca de moda DTC mediana en su hoja de seguimiento estacional. Los problemas de rendimiento aparecen mucho antes del límite de celdas, generalmente alrededor de las 50,000 filas de historial de movimientos.
La estructura base de la hoja
Necesitas como mínimo 3 pestañas: Inventario (la fuente de verdad), Movimientos (recepciones y despachos) y Dashboard (lo que tu director de operaciones realmente consulta). Opcionales pero útiles: Alertas de Reposición y Stock Envejecido.
Pestaña Inventario — columnas mínimas:
| Columna | Propósito |
|---|---|
| SKU | Código Modelo-Color-Talla (ej., BLZ-MON-NVY-10) |
| Modelo | Nombre del modelo padre (Monaco Blazer) |
| Color | Colorway (Azul Marino) |
| Talla | Etiqueta de talla (10) |
| Bodega | Código de ubicación si operas con múltiples bodegas |
| En Stock | Unidades actuales |
| En Pedido | Cantidad de OC entrante |
| Punto de Reposición | Umbral que dispara alerta de compra |
| Cantidad de Reposición | Cantidad estándar de pedido |
| Costo | Costo unitario |
| Precio de Venta | Precio de venta unitario |
| Última Actualización | Timestamp del último movimiento |
La columna SKU es tu clave de unión. Todo lo que viene después — movimientos, órdenes de compra, datos de ventas — se une por SKU. Si tu ERP exporta los códigos de modelo en un formato y tu operador logístico (3PL) los exporta en otro, cada fórmula se rompe ahí. (Va a pasar. Resuélvelo antes de que te resuelva a ti — más adelante te explico cómo.)
Fórmulas clave para la pestaña de inventario
Calcular el stock a partir de un log de movimientos — si estás jalando movimientos desde un ERP o WMS en lugar de editar el stock directamente:
=SUMIF(Movimientos!$B:$B, A2, Movimientos!$E:$E)
Donde la columna B en Movimientos es el SKU y la columna E es la cantidad (positiva para recepciones, negativa para despachos). Funciona hasta 5,000 filas de movimientos. Por encima de 40,000 filas, SUMIF sobre un rango abierto se vuelve notablemente lento. Cambia a:
=QUERY(Movimientos!A:F, "SELECT SUM(E) WHERE B = '"&A2&"' LABEL SUM(E) ''", 0)
QUERY procesa exportaciones de movimientos de 80,000 filas desde la mayoría de los operadores logísticos sin trabarse. La contrapartida es que QUERY devuelve errores en lugar de ceros cuando no hay coincidencias — envuélvelo con IFERROR(..., 0).
Alerta de reposición:
=IF((C2+D2) <= E2, "REPONER", "")
En Stock + En Pedido vs. Punto de Reposición. Simple, pero el +D2 importa — disparar una reposición cuando ya tienes 500 unidades en una OC entrante es la receta para terminar con 18 meses de inventario en un colorway que nadie quiere.
Alerta de stock envejecido — unidades sin movimiento en 90 días o más:
=IF(AND(C2>0, TODAY()-L2>=90), "ENVEJECIDO", "")
Esto requiere que tu columna de Última Actualización contenga fechas reales, no strings de texto. Casi nunca es así, porque algo en tu ERP exporta fechas como "07/05/2026" y tu 3PL exporta "2026-05-07" y ambos formatos han estado conviviendo en la columna L desde el primer trimestre. Soluciona con:
=IFERROR(DATEVALUE(TEXT(L2,"YYYY-MM-DD")), IFERROR(DATEVALUE(L2), "FECHA INVÁLIDA"))
Ese wrapper sobrevive la mayoría de las columnas de fecha con formatos mixtos — ISO 8601, fecha corta con slash y números seriales de Excel. No sobrevive strings como "07 May 2026" sin trabajo adicional, pero esos son menos frecuentes en exportaciones de ERP.
El problema del rollup por modelo
Tu director de operaciones no quiere ver 30 filas para el Monaco Blazer. Quiere 1 fila: total de unidades, valor total, estatus. Ese rollup es donde la mayoría de las hojas de inventario de ropa se rompen.
La solución más limpia es un rango separado de Resumen por Modelo usando SUMIF contra la columna de Modelo:
=SUMIF(Inventario!$B:$B, A2, Inventario!$F:$F)
Modelo en columna B, En Stock en columna F, nombre del modelo en A2 de tu resumen. Esto te da el total en stock de todas las tallas y colores para ese modelo.
Para rollups a nivel de colorway, necesitas SUMIFS:
=SUMIFS(Inventario!$F:$F, Inventario!$B:$B, A2, Inventario!$C:$C, B2)
Match de modelo en columna B, match de color en columna C. Funciona bien hasta 10,000 filas de SKU. Por encima de eso, SUMIFS sobre referencias de columna completa empieza a sumar segundos a cada recálculo. Acota tus rangos a los límites reales de los datos (ej., $F$2:$F$8001) y configura el cálculo en manual si la hoja se usa como archivo de referencia en lugar de dashboard en vivo.
Pestaña Dashboard: lo que los directores realmente preguntan
En cada reunión de operaciones sobre inventario de ropa aparecen las mismas tres preguntas:
- ¿Cuál es el valor total en stock por categoría?
- ¿Qué está envejeciendo y necesita descuento?
- ¿Qué hay que reponer antes de la próxima temporada?
Valor total en stock por categoría — asumiendo que tienes una columna de Categoría:
=QUERY(Inventario!A:K, "SELECT B, SUM(F*J) WHERE F > 0 GROUP BY B LABEL SUM(F*J) 'Valor Total'", 1)
Esto agrupa por Modelo y multiplica En Stock (col F) por Costo (col J). Se vuelca directamente en tu pestaña de dashboard como una tabla dinámica en vivo. Darle formato de tabla con formato condicional en la columna Valor Total te da el escaneo visual que tu director necesita en 10 segundos.
Tabla de inventario envejecido — FILTER jala las filas relevantes:
=FILTER(Inventario!A:L, (Inventario!F:F>0)*(TODAY()-Inventario!L:L>=90))
Con 8,000 filas de SKU, esto recalcula en menos de 2 segundos. Con 50,000 filas o más, usa QUERY:
=QUERY(Inventario!A:L, "SELECT * WHERE F > 0 AND L <= date '"&TEXT(TODAY()-90,"YYYY-MM-DD")&"'", 1)
Alerta de reposición — mismo patrón: filtra donde (En Stock + En Pedido) <= Punto de Reposición y En Stock > 0 (no tiene sentido reponer un SKU descontinuado).
Comparativa de fórmulas de agregación: SUMIF vs. QUERY vs. FILTER
Elegir la función correcta según el volumen de datos evita los recálculos lentos que hacen que nadie quiera abrir la hoja el lunes.
| Función | Volumen óptimo | Ventaja principal | Limitación clave |
|---|---|---|---|
| SUMIF / SUMIFS | Hasta ~40,000 filas | Sintaxis simple, fácil de auditar | Se vuelve lento con rangos abiertos en volúmenes altos |
| QUERY | Hasta ~200,000 filas | Agrupa, filtra y etiqueta en una sola expresión | Devuelve error (no cero) cuando no hay coincidencias |
| FILTER | Hasta ~50,000 filas | Devuelve filas completas, ideal para dashboards | No agrega; requiere fórmulas adicionales para sumas |
| ARRAYFORMULA + SUMIF | Hasta ~20,000 filas | Aplica SUMIF a toda una columna de una vez | Puede saturar memoria en catálogos grandes |
Regla práctica: empieza con SUMIF. Migra a QUERY cuando los recálculos superen los 3 segundos. Usa FILTER solo para extraer filas que necesitas mostrar completas, no para sumar.
El problema del mismatch de SKUs
Esto es lo que realmente destruye las hojas de inventario de ropa: tu ERP exporta el SKU como BLZ-MON-NVY-10 y tu 3PL lo exporta como BLZMON-NVY-10 (sin guión después del código de modelo, porque alguien lo configuró diferente en 2019). Cada SUMIF devuelve cero. Cada unión falla silenciosamente.
Antes de construir cualquier capa de fórmulas, audita tus formatos de SKU con:
=LEN(A2)
Corre eso en toda tu columna de SKU y ordena por longitud. Los valores atípicos casi siempre señalan una inconsistencia de formato. Luego usa SUBSTITUTE para normalizar:
=SUBSTITUTE(TRIM(UPPER(A2)), " ", "-")
UPPER resuelve diferencias de mayúsculas y minúsculas. TRIM elimina espacios al inicio y al final (invisibles, siempre presentes en importaciones CSV). SUBSTITUTE normaliza SKUs delimitados por espacio a delimitados por guión. Haz esto en una columna auxiliar y une contra la versión limpia, no contra la importación cruda.
Cuándo una hoja de cálculo para inventario de ropa ya no es suficiente
Las hojas de cálculo manejan bien el inventario de ropa hasta aproximadamente 3 bodegas, 10,000 SKUs activos y volúmenes de movimientos semanales menores a 50,000 filas. Superados esos umbrales, el tiempo de recálculo y la actualización manual de datos empiezan a crear riesgo operativo real — recálculos de fórmulas de 30 segundos e información de inventario con 24-48 horas de retraso porque nadie quiere actualizar la hoja.
La lógica de distribución entre múltiples bodegas — asignar unidades disponibles entre centros de fulfillment según señales de demanda — también es donde la lógica en hojas de cálculo se vuelve frágil. Puedes construirla con IFs anidados y ARRAYFORMULA, pero un cambio de esquema en la exportación de tu WMS la romperá silenciosamente de formas que no detectarás hasta que un cliente llame a reclamar.
Dicho esto, para operaciones de una sola bodega con menos de 10,000 SKUs, una hoja de Google Sheets bien estructurada supera a la mayoría de las implementaciones de software de inventario por semanas de configuración y miles de dólares en licencias.
Cómo evitar que todo se rompa el lunes
Las 2 cosas que matan las hojas de seguimiento de ropa son la deriva de esquema (tu ERP agrega una columna y desplaza todo a la derecha) y la corrupción de formato de fechas (alguien exporta desde un sistema nuevo). Ambas tienen solución: rangos nombrados en lugar de referencias por letra de columna, e IFERROR en cada cálculo de fecha.
Para los rangos nombrados: selecciona tu columna de SKU, ve a Datos → Rangos con nombre y llámala inv_sku. Cada fórmula que referencia Inventario!$A:$A pasa a ser inv_sku. Cuando el esquema cambia, actualizas la definición del rango nombrado en un solo lugar.
Si usas ModelMonkey en tu Google Sheet, puedes pedirle que audite tus referencias de fórmulas después de cualquier cambio de esquema — identifica rangos rotos y sugiere referencias actualizadas sin que tengas que rastrear cada fórmula manualmente. Esa es la parte que te toma 45 minutos un lunes por la mañana; con un asistente de IA en el panel lateral toma unos 2 minutos. Elige un plan de ModelMonkey — funciona tanto en Google Sheets como en Excel.
Preguntas frecuentes
¿Cuántos SKUs puede manejar una hoja de Google Sheets antes de volverse lenta? Con fórmulas bien estructuradas (rangos acotados, QUERY en lugar de SUMIF para volúmenes altos), Google Sheets maneja sin problemas catálogos de hasta 10,000 SKUs activos. Los problemas de rendimiento típicamente aparecen en la pestaña de Movimientos, no en la de Inventario: cuando el historial de movimientos supera las 50,000 filas, los recálculos empiezan a demorar más de 5 segundos.
¿Es mejor usar una hoja por temporada o una sola hoja acumulativa? Una sola hoja acumulativa con una columna de Temporada es más fácil de mantener y permite comparaciones entre períodos sin IMPORTRANGE. El riesgo es el crecimiento de filas: si agregas 2,000 SKUs por temporada y archivas 4 temporadas al año, en 3 años tienes 24,000 filas activas. Ese volumen sigue siendo manejable; archiva temporadas pasadas en una pestaña separada cuando dejen de ser relevantes para el inventario en vivo.
¿Cómo actualizo el stock automáticamente sin editar celdas manualmente? La forma más común en operaciones medianas es exportar el reporte de movimientos de tu WMS o ERP como CSV e importarlo a la pestaña de Movimientos con una macro de Apps Script que corre al abrir la hoja. El stock en la pestaña de Inventario se recalcula automáticamente vía SUMIF o QUERY. Ninguna celda se edita a mano — solo se reemplaza el rango de datos de la exportación.
¿Qué hago si mi ERP y mi 3PL usan formatos de SKU distintos? Crea una pestaña de Tabla de Equivalencias con dos columnas: SKU del ERP y SKU del 3PL. En lugar de unir directamente por SKU en tus fórmulas, usa INDEX/MATCH contra esa tabla para traducir antes de agregar. Mantener la equivalencia en una pestaña centralizada es mucho más fácil de auditar que buscar SUBSTITUTE dispersos en 40 fórmulas.
¿Cuándo vale la pena migrar a un software de inventario dedicado? Cuando superes cualquiera de estos tres umbrales: más de 3 bodegas con lógica de distribución entre ellas, más de 10,000 SKUs activos, o más de 50,000 movimientos semanales. Por debajo de esos límites, una hoja bien estructurada es más rápida de implementar y más barata que cualquier plataforma de gestión de inventario del mercado.