Automatizá el control de stock por SKU
Te pasó alguna vez que estás tratando de llevar el control de inventario y, de repente, se te rompe una fórmula porque borraste o moviste una fila? Es frustrante ver cómo los totales se descontrolan, aparecen errores tipo #REF! o, peor aún, terminás con números negativos imposibles en tu stock por un error de carga. Gestionar esto arrastrando fórmulas manualmente es una pérdida de tiempo y un peligro constante para la precisión de tus datos.
El Plan de Acción:
- Estandarización de Movimientos: En lugar de sumar y restar manualmente, creamos una capa lógica invisible que traduce palabras (como “In”, “Out” o “Return”) en valores matemáticos positivos o negativos automáticamente. Así, no importa cómo escribas el movimiento, Excel siempre sabrá si suma o resta.
- Ejecución con Reseteo Automático: Implementamos un motor de cálculo que recorre toda tu lista fila por fila, sumando cantidades pero con una instrucción crítica: en el momento exacto en que detecta que el SKU cambió, limpia el contador y empieza de cero para el nuevo producto, asegurando que los saldos no se mezclen entre productos distintos.
Implementación Detallante:
Para lograr esto, no vamos a usar la típica fórmula de suma que tenés que arrastrar hacia abajo. Vamos a usar una “fórmula de matriz dinámica” que se escribe una sola vez en la celda E2 y se expande sola por toda la columna.
Requisitos previos en tu planilla:
- Columna A: Contiene el identificador del producto (SKU).
- Columna C: Contiene el tipo de movimiento (ejemplo: “In”, “Out”, “Return”, “Adjust”).
- Columna D: Contiene la cantidad del movimiento.
Pasos para la configuración:
- Seleccioná la celda E2 (la primera celda debajo de tu encabezado “Running stock”).
- Copiá y pegá la siguiente fórmula exacta:
=LET( sku, A2:A16, type, C2:C16, qty, D2:D16, delta, MAP(type, qty, LAMBDA(_t, _q, SWITCH(UPPER(_t), “IN”, _q, “RETURN”, _q, “OUT”, -_q, “ADJUST”, _q, 0))), SCAN(0, SEQUENCE(ROWS(delta)), LAMBDA(stock, i, LET( d, INDEX(delta, i), currentSku, INDEX(sku, i), prevSku, IF(i=1, "", INDEX(sku, i-1)), IF(i=1, MAX(0, d), IF(currentSku=prevSku, MAX(0, stock+d), MAX(0, d))) ) )) )
¿Qué es lo que acabás de instalar? Te explico cómo funciona cada pieza para que seas el dueño de tu propia automatización:
- El motor de variables (LET): Esta parte es la que te da libertad. Al principio de la fórmula ves “sku, A2:A16”. Si mañana tu lista crece hasta la fila 500, no tenés que desarmar la fórmula; solo cambiás ese rango una sola vez y listo. Todo el resto se actualiza solo.
- El traductor automático (MAP + SWITCH): Esta es la magia de la eficiencia. La función MAP recorre tu columna de “Tipo” y, mediante un SWITCH, decide: si dice “IN” o “RETURN”, lo trata como positivo; si dice “l” (Out), le pone un signo menos delante para que reste. Esto elimina el error humano de cargar mal un signo.
- El cerebro del acumulado (SCAN): Esta función es la que hace el trabajo pesado. Va fila por fila y va guardando el resultado anterior (el “stock”). Pero tiene una condición inteligente: compara el SKU de la fila actual con el de la fila anterior. Si son iguales, sigue sumando; si detecta un SKU nuevo, ¡pum!, resetea el contador a cero para empezar con el nuevo producto.
- El seguro de vida (MAX): Esta es tu red de seguridad contra errores de carga. Al usar MAX(0, …), le estamos diciendo a Excel: “Si por un error alguien cargó una salida mayor al stock disponible, no me muestres un número negativo loco, mantenelo en 0”. Esto mantiene la integridad visual de tu inventario.
Beneficios inmediatos para tu productividad:
- Cero mantenimiento: Te olvidás de “arrastrar la fórmula” cada vez que agregás un movimiento. La fórmula vive en una sola celda y se encarga del resto.
- Blindaje contra errores #REF!: Como la lógica no depende de celdas fijas hacia arriba, podés filtrar o incluso borrar filas intermedias sin que la planilla explote.
- Arquitectura limpia: Al usar nombres claros (sku, type, qty), cualquier persona que vea la fórmula entenderá qué está pasando, facilitando el trabajo en equipo.
Herramienta Sugerida:
Microsoft Excel (Versión Microsoft 365 o Excel 2021 en adelante). Para que esta solución funcione de forma mágica, necesitás una versión de Excel que soporte “Matrices Dinámicas”. Estas versiones incluyen las funciones LET, MAP y SCAN. No uses versiones viejas (como Excel 2016) porque la fórmula no podrá expandirse sola y te dará error. Es la herramienta ideal porque permite crear sistemas de gestión profesionales sin necesidad de programar en VBA ni usar software costoso de inventarios.
Prompt para copiar:
Tengo una planilla de Excel con los siguientes datos: Columna A (SKU), Columna C (Tipo de movimiento) y Columna D (Cantidad). Necesito que me redactes una fórmula única utilizando la función LET para calcular el stock acumulado en la columna E. La fórmula debe cumplir tres reglas: 1) Si el tipo es "IN", "RETURN" o "ADJUST", la cantidad suma; si es "OUT", la cantidad resta. 2) El cálculo del stock acumulado debe reiniciarse automáticamente cada vez que el SKU cambie respecto a la fila anterior. 3) El resultado nunca debe ser un número negativo (si una salida supera el stock, debe mostrar 0). Utilizá funciones de matrices dinámicas como MAP y SCAN para que sea una sola fórmula expansible.