La semana pasada me tocó rescatar a una distribuidora en Las Condes que tenía 17 archivos Excel interconectados para manejar inventario, ventas y clientes. La cosa se puso crítica cuando se dieron cuenta que habían vendido 500 unidades de un producto que no tenían en stock. Tres días perdidos buscando el error entre fórmulas.
El momento exacto en que Excel ya no sirve
Después de trabajar con varias PYMES chilenas, hay señales universales de que tu operación superó las hojas de cálculo:
Múltiples versiones del "mismo" archivo: Cuando tienes inventario_final.xlsx, inventario_final_v2.xlsx, inventario_REAL_marzo.xlsx. La distribuidora que mencioné tenía 8 versiones de su archivo de stock.
Más de 3 personas editando: Excel no fue hecho para colaboración real. Si tienes más gente trabajando al mismo tiempo, vas a perder datos. Punto.
Fórmulas que nadie entiende: Ese =VLOOKUP anidado con 4 IF que escribió el contador hace 2 años y que nadie se atreve a tocar. Cuando la persona que lo hizo se va, quedas en el aire.
Demoras de más de 30 segundos: Si tu archivo tarda en abrir o cada operación congela el computador, ya tienes demasiados datos.
Backup manual todos los días: Cuando tu proceso incluye "guardar copia en Dropbox antes de cerrar", necesitas algo mejor.
En mi experiencia, el punto crítico llega cuando estos problemas se combinan. Una farmacia en Providencia me contactó después de perder 2 días de ventas porque se corrompió su archivo principal.
Cómo funciona la migración sin morir en el intento
La clave está en no tirar Excel inmediatamente. Lo usas como respaldo mientras construyes el reemplazo:
Flujo de migración de Excel a sistema propio
El truco está en migrar por módulos. No puedes parar la operación para cambiar todo de una vez.
Paso 1: Auditar qué tienes realmente
Antes de tocar código, necesitas mapear todos los procesos. En la distribuidora encontré:
- 3 archivos de inventario (cada sucursal tenía el suyo)
- 2 archivos de clientes (uno para crédito, otro para contado)
- 5 archivos de proveedores
- 7 archivos de reportes mensuales
La mayoría estaban duplicando información. El 60% de los datos se repetía entre archivos.
-- Estructura típica que encuentro en estas migraciones
CREATE TABLE productos (
id SERIAL PRIMARY KEY,
codigo VARCHAR(50) UNIQUE NOT NULL,
nombre VARCHAR(200) NOT NULL,
stock_actual INTEGER DEFAULT 0,
precio_compra DECIMAL(10,2),
precio_venta DECIMAL(10,2),
proveedor_id INTEGER REFERENCES proveedores(id),
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE movimientos_stock (
id SERIAL PRIMARY KEY,
producto_id INTEGER REFERENCES productos(id),
tipo VARCHAR(20) CHECK (tipo IN ('ingreso', 'venta', 'ajuste')),
cantidad INTEGER NOT NULL,
precio_unitario DECIMAL(10,2),
fecha TIMESTAMP DEFAULT NOW(),
usuario VARCHAR(100),
observaciones TEXT
);Paso 2: Extraer y limpiar datos
Aquí es donde duele. Los datos en Excel nunca están limpios. En la distribuidora:
- Productos duplicados con nombres similares: "Coca Cola 500ml", "CocaCola 500 ml", "Coca-Cola 500ML"
- Fechas en 4 formatos diferentes
- Campos vacíos que deberían ser cero
- Textos donde deberían ir números
Uso Python con pandas para limpiar antes de migrar:
import pandas as pd
import numpy as np
def limpiar_productos(df):
# Normalizar nombres
df['nombre'] = df['nombre'].str.strip().str.title()
# Convertir precios (algunos venían como texto)
df['precio'] = pd.to_numeric(df['precio'], errors='coerce').fillna(0)
# Eliminar duplicados por código
df = df.drop_duplicates(subset=['codigo'], keep='last')
# Validar stocks negativos
df.loc[df['stock'] < 0, 'stock'] = 0
return df
# Cargar todos los archivos de inventario
archivos = ['inventario_sucursal1.xlsx', 'inventario_sucursal2.xlsx']
df_final = pd.DataFrame()
for archivo in archivos:
df = pd.read_excel(archivo)
df_limpio = limpiar_productos(df)
df_final = pd.concat([df_final, df_limpio], ignore_index=True)
# Exportar limpio para revisión
df_final.to_excel('productos_consolidado.xlsx', index=False)Paso 3: Construir el MVP
No hagas un ERP completo de una. Empieza con lo más crítico. Para la distribuidora era el control de stock en tiempo real.
Usé Next.js con Prisma porque necesitaban algo rápido:
// prisma/schema.prisma
model Producto {
id Int @id @default(autoincrement())
codigo String @unique
nombre String
stockActual Int @default(0)
precioVenta Decimal @db.Decimal(10, 2)
movimientos MovimientoStock[]
createdAt DateTime @default(now())
}
model MovimientoStock {
id Int @id @default(autoincrement())
productoId Int
tipo String // 'ingreso' | 'venta' | 'ajuste'
cantidad Int
precioUnitario Decimal @db.Decimal(10, 2)
fecha DateTime @default(now())
usuario String
producto Producto @relation(fields: [productoId], references: [id])
}Paso 4: Migración paralela
Aquí viene lo importante: mantén Excel funcionando mientras pruebas el nuevo sistema.
En la distribuidora corrimos ambos sistemas 3 semanas. Cada venta se registraba en los dos lados. Al final del día comparábamos números.
Los primeros días había diferencias del 15%. Principalmente por:
- Ventas que se registraban en Excel pero no en el sistema
- Diferencias de redondeo en los cálculos
- Movimientos de ajuste que no se migraron
Resultados después de 2 meses
Los números no mienten:
Antes (Excel):
- 45 minutos diarios actualizando archivos
- Errores de stock: 2-3 por semana
- Reportes: 4 horas cada fin de mes
- Acceso: solo desde 2 computadores
Después (sistema propio):
- 5 minutos diarios de mantención
- Errores de stock: prácticamente cero
- Reportes: automáticos, en tiempo real
- Acceso: desde cualquier dispositivo
El ROI se pagó en 6 semanas solo con el tiempo ahorrado.
Lo que aprendí en el proceso
• Excel nunca está tan mal como parece: Muchas veces los procesos están bien pensados, solo necesitan una herramienta mejor.
• La resistencia al cambio es real: Especialmente de gente que lleva años dominando Excel. Necesitas mostrar beneficios inmediatos.
• Migrar datos es el 80% del trabajo: Construir el sistema es rápido. Limpiar y migrar información histórica es lo que toma tiempo.
• Mantén backup de Excel 6 meses mínimo: Siempre aparecen casos edge que no consideraste. Tener el Excel original te salva.
• No migres reportes complejos al principio: Enfócate en la operación diaria. Los reportes financieros complejos déjalos para la segunda fase.
Para cerrar
Si estás leyendo esto porque tu Excel ya no da más, probablemente ya perdiste el momento ideal para migrar. Pero nunca es tarde.
La clave está en no tener miedo de construir algo simple que funcione, en lugar de seguir parcheando algo complejo que falla.
¿Tu empresa está en esa situación? ¿Qué señales has visto de que ya necesitan algo mejor que Excel?
