Control de inventario en Excel y cuándo pasar a un ERP
Cuatro hojas, columnas exactas y fórmulas probadas en Excel para tu inventario, y las señales reales de cuándo migrar a un ERP, con datos de Odoo.
Un inventario en Excel funciona cuando tiene un catálogo, un registro de cada entrada y de cada salida, y una hoja que calcula la existencia sola. Este tutorial te deja esa estructura con las columnas exactas y fórmulas que probamos en Excel antes de publicarlas.
En Cover IT implementamos Odoo, y varias de esas implementaciones empezaron con un archivo así. En cuatro de nuestros clientes, parte o todo el catálogo se cargó a Odoo desde un archivo. Al final te contamos, con datos de esas migraciones, en qué punto Excel deja de alcanzar.
Antes de empezar: tres detalles que rompen las fórmulas
- Punto y coma o coma. Escribimos las fórmulas con punto y coma, lo habitual en Excel en español. Si Excel te da error, usa coma, porque el separador depende de la configuración regional de Windows.
- BUSCARX (XLOOKUP) no está en todas las versiones. Funciona en Excel para Microsoft 365 y Excel 2021 en adelante, pero no en Excel 2016 ni 2019. Para esos casos te dejamos la alternativa con BUSCARV (VLOOKUP).
- Los códigos van como texto. Excel quita los ceros a la izquierda, pasa los números largos a notación científica y solo guarda 15 dígitos significativos. Antes de escribir SKU o códigos de barra, selecciona la columna, presiona Ctrl+1 y elige Texto.
La estructura: cuatro hojas
Cada movimiento ocupa una fila, y la existencia nunca se escribe a mano porque se calcula.
| Hoja | Para qué sirve | Columnas |
|---|---|---|
| Productos | El catálogo, una fila por producto. | SKU, Producto, Unidad, Mínimo |
| Entradas | Compras, devoluciones de clientes y el inventario inicial. | Fecha, SKU, Producto, Cantidad, Costo unitario, Costo total, Proveedor, Documento |
| Salidas | Ventas, mermas, consumo interno y ajustes. | Fecha, SKU, Producto, Cantidad, Motivo, Documento |
| Existencias | El resultado, una fila por producto. | SKU, Producto, Entradas, Salidas, Existencia, Mínimo, Reponer, Costo promedio, Valor |
El inventario inicial va como una entrada más, con la fecha del día en que contaste y el documento «Inventario inicial». Así todo sale de los movimientos.
Paso 1: convierte cada hoja en una tabla
Escribe los encabezados en la fila 1, selecciónalos junto con una fila de datos y presiona Ctrl+T. En las opciones de diseño de la tabla, cambia el nombre de cada una a Productos, Entradas, Salidas y Existencias. Con eso las fórmulas usan nombres de columna. [@SKU] significa «el SKU de esta misma fila», y una fórmula escrita en una celda se copia sola al resto de la columna.
Paso 2: listas desplegables para no escribir códigos a mano
En Entradas y en Salidas, selecciona la columna SKU y entra en Datos > Validación de datos. En Permitir elige Lista y en Origen escribe =INDIRECTO("Productos[SKU]"). Con INDIRECTO (INDIRECT) la lista crece sola cuando agregas productos al catálogo. Lo comprobamos en Excel. Si en Origen seleccionas el rango con el mouse, el producto nuevo no aparece en la lista.
Haz lo mismo con la columna Motivo de Salidas, con el origen Venta;Merma;Consumo interno;Ajuste (con comas si ese es tu separador).
Paso 3: las fórmulas
En Existencias, la columna SKU la llenas tú, copiando los SKU del catálogo; el resto lo calculan las fórmulas. Escribe cada una en la primera fila de datos de su columna. Usamos BUSCARX (XLOOKUP), SUMAR.SI.CONJUNTO (SUMIFS) y SI (IF). Fíjate en el asterisco, que es el signo de multiplicar. Sin él, la fórmula no funciona.
| Hoja y columna | Fórmula | En Excel en inglés |
|---|---|---|
| Entradas y Salidas: Producto | =BUSCARX([@SKU];Productos[SKU];Productos[Producto];"SKU no existe") | =XLOOKUP([@SKU],Productos[SKU],Productos[Producto],"SKU no existe") |
| Entradas: Costo total | =[@Cantidad]*[@[Costo unitario]] | Igual |
| Existencias: Producto | =BUSCARX([@SKU];Productos[SKU];Productos[Producto]) | =XLOOKUP([@SKU],Productos[SKU],Productos[Producto]) |
| Existencias: Entradas | =SUMAR.SI.CONJUNTO(Entradas[Cantidad];Entradas[SKU];[@SKU]) | =SUMIFS(Entradas[Cantidad],Entradas[SKU],[@SKU]) |
| Existencias: Salidas | =SUMAR.SI.CONJUNTO(Salidas[Cantidad];Salidas[SKU];[@SKU]) | =SUMIFS(Salidas[Cantidad],Salidas[SKU],[@SKU]) |
| Existencias: Existencia | =[@Entradas]-[@Salidas] | Igual |
| Existencias: Mínimo | =BUSCARX([@SKU];Productos[SKU];Productos[Mínimo]) | =XLOOKUP([@SKU],Productos[SKU],Productos[Mínimo]) |
| Existencias: Reponer | =SI([@Existencia]<=[@Mínimo];"Reponer";"OK") | =IF([@Existencia]<=[@Mínimo],"Reponer","OK") |
| Existencias: Costo promedio | =SI([@Entradas]=0;0;SUMAR.SI.CONJUNTO(Entradas[Costo total];Entradas[SKU];[@SKU])/[@Entradas]) | =IF([@Entradas]=0,0,SUMIFS(Entradas[Costo total],Entradas[SKU],[@SKU])/[@Entradas]) |
| Existencias: Valor | =[@Existencia]*[@[Costo promedio]] | Igual |
El costo promedio pondera todas las compras del producto desde el principio. Para tener una idea del valor del inventario sirve; para la contabilidad, tu contador puede pedirte otro método.
Si usas Excel 2016 o 2019, cambia BUSCARX por BUSCARV con el número de columna del catálogo. =BUSCARV([@SKU];Productos;2;FALSO) trae el nombre y =BUSCARV([@SKU];Productos;4;FALSO) trae el mínimo.
Para saber la existencia a una fecha, por ejemplo al 31 de diciembre, escribe la fecha en una celda fuera de la tabla, por ejemplo N1, y agrega esta columna a Existencias: =SUMAR.SI.CONJUNTO(Entradas[Cantidad];Entradas[SKU];[@SKU];Entradas[Fecha];"<="&$N$1)-SUMAR.SI.CONJUNTO(Salidas[Cantidad];Salidas[SKU];[@SKU];Salidas[Fecha];"<="&$N$1).
Y para que los productos por reponer salten a la vista, selecciona la columna Reponer y ve a Inicio > Formato condicional > Nueva regla > «Utilizar una fórmula que determine las celdas para aplicar formato», con =$G2="Reponer" y un relleno rojo.
Paso 4: el conteo físico
Cuenta al menos una vez al mes, o por categorías si el catálogo es grande. Cuando el conteo no coincide con la existencia, registra la diferencia como un movimiento más. Si falta mercancía, una salida con motivo Ajuste; si sobra, una entrada. En Documento pon «Conteo» y la fecha. Así ves cuánto se pierde cada mes.
Lo que Excel no hace por ti
- No descuenta solo. Cada venta se escribe dos veces, en la factura y en Salidas. Si la factura sale y nadie anota la salida, la existencia miente.
- Dos personas a la vez. Para editar el mismo archivo al mismo tiempo necesitas Microsoft 365 y guardarlo en OneDrive o SharePoint. Si dos personas cambian la misma celda, por lo general se queda el último cambio guardado.
- Cualquiera puede sobrescribir. En Microsoft 365, Mostrar cambios te dice quién cambió qué celda en los últimos 365 días, pero no impide que alguien escriba encima de una fórmula o borre una fila.
- Tiene techo. Una hoja admite 1,048,576 filas. Lácteos Dimadri registra en Odoo unos 31,500 movimientos de inventario al mes. En Excel, su hoja de Salidas se llenaría en menos de tres años.
Cuándo migrar a un ERP
El tamaño del catálogo engaña. De los seis clientes que llevan inventario almacenable en Odoo con nosotros, cuatro tienen menos de 100 productos almacenables. Con ese tamaño, la hoja de arriba aguanta. Lo que cambia la cuenta es lo que tiene que pasar en el mismo movimiento:
- Facturas desde el inventario. En noviembre de 2026 vencen los últimos plazos de la DGII para emitir comprobantes fiscales electrónicos (e-CF), y una hoja de Excel no los emite. Lo explicamos en el tutorial de ventas en Excel y en la guía de facturación electrónica de la DGII.
- Más de una caja o más de un almacén. Lácteos Dimadri cobra en tres cajas y tiene dos almacenes. Al cerrar cada turno de caja, Odoo descuenta de la existencia todo lo vendido, sin que nadie lo copie a otra hoja.
- Lotes y vencimientos. En Excel se puede con columnas de lote y de vencimiento, pero la existencia pasa a ser por producto y por lote, y cada SUMAR.SI.CONJUNTO lleva un criterio más.
- El cierre de mes se va en cuadrar. Si alguien pasa días cruzando el inventario con las facturas y la contabilidad, ese es el costo real de la hoja. En Vanessa Guzmán Beauty Studio lo resolvimos conectando todo, y hoy cada cobro descuenta el producto y cae en la contabilidad.
Cómo se ve una migración: Lácteos Dimadri
Tu Excel sirve como archivo de carga, porque Odoo importa archivos .xlsx y .csv. Así fue con Lácteos Dimadri, según los registros de su propio Odoo:
- 25 de enero de 2026: contactos importados en dos cargas.
- 4 de febrero: 4,194 productos importados en tres minutos, desde un archivo de 28 columnas con código de barra, descripción, precio, costo, impuesto y unidades de compra y de venta, entre otras.
- 5 y 6 de febrero: la importación se volvió a usar con columnas de impuestos, unidades de medida, nombres y códigos de barra.
- 6 de febrero: primera venta en caja.
De ahí salen dos lecciones. La primera es que el catálogo rara vez entra limpio en el primer intento. Es normal que el archivo traiga columnas de control para marcar, por ejemplo, códigos de barra que no coinciden con el original. En los cuatro clientes donde se cargaron productos desde un archivo, el registro de Odoo muestra nuevas importaciones en los días siguientes para ajustar columnas, y en dos de ellos eran de impuestos. Antes de migrar, deja un SKU único por producto, los códigos como texto y una unidad y un impuesto por producto.
La segunda es que Excel se queda en la empresa. Sigue siendo la mejor herramienta para preparar cambios masivos, como una lista de precios nueva, que luego se importa de una vez.
Si quieres ver cómo quedaría tu inventario en Odoo, agenda 30 minutos con nosotros y lo revisamos con tu propio archivo.
Fuentes
- Microsoft Support, Función SUMAR.SI.CONJUNTO, Función BUSCARX, Función BUSCARV, Función SI y Función INDIRECTO.
- Microsoft Support, Usar referencias estructuradas con las tablas de Excel, Usar columnas calculadas en una tabla de Excel y Cambiar el nombre de una tabla de Excel.
- Microsoft Support, Crear una lista desplegable y Utilice el formato condicional para resaltar la información.
- Microsoft Support, Mantener los ceros iniciales y números grandes y Especificaciones y límites de Excel.
- Microsoft Support, Colaborar en libros de Excel al mismo tiempo con la coautoría y Mostrar cambios realizados en un libro.
- Microsoft Learn, Errores de fórmula cuando el separador de lista no se ha ajustado correctamente.
- Odoo, Exportar e importar datos (Odoo 17).
- DGII, Aviso 06-26 (prórroga hasta noviembre de 2026 para pequeños, micros y no clasificados) y KPMG, resumen del Aviso 14-26 (grandes locales y medianos, desde el 1 de noviembre de 2026).
Preguntas Frecuentes
Crea cuatro hojas convertidas en tabla: Productos, Entradas, Salidas y Existencias. Registra cada movimiento en una fila y deja que Existencias calcule el saldo de cada SKU con SUMAR.SI.CONJUNTO (SUMIFS), entradas menos salidas.
En la hoja Existencias, suma las entradas del SKU con =SUMAR.SI.CONJUNTO(Entradas[Cantidad];Entradas[SKU];[@SKU]), suma las salidas igual sobre la tabla Salidas y resta las dos columnas. En Excel en inglés la función es SUMIFS y los argumentos se separan con coma.
Cuando el inventario tiene que moverse junto con otras cosas: facturar e-CF, cobrar en varias cajas, manejar más de un almacén o controlar lotes y vencimientos. El tamaño del catálogo no lo decide por sí solo. Cuatro de nuestros seis clientes con inventario en Odoo tienen menos de 100 productos almacenables.
