En 30 segundos
- Exporta dos ficheros de tu TPV, de Holded o del BI de la empresa: ventas por referencia y stock de hoy.
- Una hoja con fórmulas calcula la clase ABC por venta y por margen, los días sin venta y el valor del stock, y marca cada referencia como Vigilar (60 días) o Muerto (90 días).
- La IA no calcula nada: recibe la tabla terminada y propone una acción por referencia (traspaso, exposición, pack, rebaja, devolución, no recomprar).
- Cada lunes te llega un correo con el resumen de la hoja, la lectura de la IA y la lista ordenada por dinero parado.
Tiempo para montarlo: ~2 tardes: una para dejar la hoja con tus datos y otra para el envío automático del lunes.
Necesitas: la exportación de ventas por referencia (doce meses) y la de stock con coste, una hoja de Google, n8n o Make y acceso por API a una IA. Sin automatizar, la hoja funciona sola.
En todas las tiendas que he llevado había un rincón del almacén que nadie miraba. No por dejadez: el día a día está en lo que se vende, y lo que no se vende no hace ruido. El problema es que ese rincón es dinero, y cuanto más tarda en salir, más cuesta sacarlo.
Si quieres la teoría corta, la tienes en el glosario: stock muerto y análisis ABC. Aquí vamos a la práctica: qué exportar, qué fórmulas poner, qué hace la IA y cómo te llega cada lunes.
Qué vas a montar
Tienda pequeña o cadena: de dónde salen los datos
| Tienda pequeña | Cadena con SAP, Oracle o Dynamics | |
|---|---|---|
| Origen | Exportación del TPV (Shopify POS, Square, Lightspeed…) o de Holded a Excel o CSV | El informe de BI que ya recibes (BW, BusinessObjects, Power BI…) exportado a Excel o CSV |
| Dónde se calcula | Hoja de Google con fórmulas, o n8n con un nodo de código | Hoja o Excel de la empresa; n8n autoalojado o Power Automate si lo tenéis aprobado |
| IA | API de tu proveedor con cuenta del negocio | Solo la que la empresa permita (Copilot, por ejemplo, si es la aprobada) |
| Qué no hacer | Fiarte de la primera exportación sin revisar | Conectar nada al ERP o pedir accesos que no tienes. Se trabaja sobre exportaciones |
En una cadena, la central ya calcula ABC, pero de toda la cadena. Hacerlo para tu tienda o tu zona con el informe que ya te llega sirve para ver lo que el dato global esconde: una referencia que es A en la cadena y C en tu tienda es una conversación para tener con compras, con datos.
Qué exportar y cómo dejarlo limpio
Crea una hoja de Google con dos pestañas de entrada. Pega cada exportación en la suya con estas columnas, en este orden (renombra las cabeceras si tu sistema las llama distinto):
- Ventas (una fila por referencia, del periodo que elijas; doce meses es lo habitual): SKU · Descripción · Familia · Unidades · Venta neta · Margen bruto · Última venta.
- Stock (foto de hoy): SKU · Stock · Coste unitario.
Venta neta y margen, sin IVA. Si tu informe no trae margen, calcúlalo como venta neta menos coste de lo vendido; tienes la definición en margen bruto.
Si la exportación no trae «Última venta», exporta las líneas de venta de los últimos 120 días (fecha y SKU por línea) a una pestaña Lineas y saca la fecha con =MAX.SI.CONJUNTO(Lineas!A:A; Lineas!B:B; A2), donde A es la fecha y B el SKU. Si da 0, no hay venta en ese periodo.
¿Cómo se hace un análisis ABC en Google Sheets?
Crea una pestaña Calculo. En la fila 1, las cabeceras: SKU · Descripción · Familia · Venta neta · Margen bruto · Última venta · Stock · Coste unitario · Valor stock · Acum venta · ABC venta · Acum margen · ABC margen · Días sin venta · Estado. En la fila 2, estas fórmulas (hoja en español, con punto y coma), y cópialas hacia abajo:
| Col. | Qué es | Fórmula en la fila 2 |
|---|---|---|
| A | SKU (todos, con venta o con stock) | =UNICO(FILTRAR({Ventas!A2:A; Stock!A2:A}; {Ventas!A2:A; Stock!A2:A}<>"")) |
| B | Descripción | =SI.ERROR(BUSCARV(A2; Ventas!A:G; 2; FALSO); "") |
| C | Familia | =SI.ERROR(BUSCARV(A2; Ventas!A:G; 3; FALSO); "") |
| D | Venta neta | =SI.ERROR(BUSCARV(A2; Ventas!A:G; 5; FALSO); 0) |
| E | Margen bruto | =SI.ERROR(BUSCARV(A2; Ventas!A:G; 6; FALSO); 0) |
| F | Última venta | =SI.ERROR(BUSCARV(A2; Ventas!A:G; 7; FALSO); "") |
| G | Stock | =SI.ERROR(BUSCARV(A2; Stock!A:C; 2; FALSO); 0) |
| H | Coste unitario | =SI.ERROR(BUSCARV(A2; Stock!A:C; 3; FALSO); 0) |
| I | Valor stock | =G2*H2 |
| J | % de venta de las que venden más | =SI(D2<=0; 1; SUMAR.SI($D$2:$D; ">"&D2) / SUMAR.SI($D$2:$D; ">0")) |
| K | ABC por venta | =SI(J2<0,8; "A"; SI(J2<0,95; "B"; "C")) |
| L | % de margen de las que dejan más | =SI(E2<=0; 1; SUMAR.SI($E$2:$E; ">"&E2) / SUMAR.SI($E$2:$E; ">0")) |
| M | ABC por margen | =SI(L2<0,8; "A"; SI(L2<0,95; "B"; "C")) |
| N | Días sin venta | =SI(F2=""; "sin venta"; HOY()-F2) |
| O | Estado | =SI(G2<=0; ""; SI(O(F2=""; HOY()-F2>=90); "Muerto"; SI(HOY()-F2>=60; "Vigilar"; ""))) |
La fórmula de la columna A va solo en A2: rellena la columna entera. Las demás, copiadas hacia abajo hasta donde llegue.
Cómo funciona el ABC sin ordenar nada: la columna J suma lo que venden todas las referencias que venden más que esta y lo divide por el total. Si las que van por delante no llegan al 80 %, esta es A; si no llegan al 95 %, B; el resto, C. Es el mismo criterio que ordenar de mayor a menor y mirar el acumulado. Los cortes 80 y 95 son los habituales; cámbialos si tu surtido lo pide.
Si tu hoja está en inglés: SI es IF, SI.ERROR es IFERROR, BUSCARV es VLOOKUP, SUMAR.SI es SUMIF, UNICO es UNIQUE, FILTRAR es FILTER, HOY es TODAY, O es OR, FALSO es FALSE; el separador es la coma y el decimal, el punto (0.8).
| SKU | Descripción | Familia | ABC venta | ABC margen | Días sin venta | Stock | Valor stock | Estado |
|---|---|---|---|---|---|---|---|---|
| 00127 | Taza cerámica blanca | Hogar | A | A | 2 | 40 | 80,00 € | |
| 00318 | Manta de sofá | Hogar | C | B | 74 | 12 | 180,00 € | Vigilar |
| 00560 | Cojín terciopelo | Hogar | C | C | sin venta | 15 | 90,00 € | Muerto |
| 00412 | Bufanda punto gris | Complementos | C | C | 155 | 7 | 38,50 € | Muerto |
La pestaña de resumen
Una pestaña Resumen con los totales. Es lo que encabeza el correo, y sale de la hoja, no de la IA:
- Referencias A, B y C por venta: =CONTAR.SI(Calculo!K:K; "A"), y lo mismo con "B" y "C".
- Valor del stock muerto: =SUMAR.SI(Calculo!O:O; "Muerto"; Calculo!I:I). Y el de vigilar, con "Vigilar".
- Una celda de texto para el correo, en B1: ="Muerto: "&CONTAR.SI(Calculo!O:O; "Muerto")&" refs, "&REDONDEAR(SUMAR.SI(Calculo!O:O; "Muerto"; Calculo!I:I); 0)&" € a coste. Vigilar: "&CONTAR.SI(Calculo!O:O; "Vigilar")&" refs, "&REDONDEAR(SUMAR.SI(Calculo!O:O; "Vigilar"; Calculo!I:I); 0)&" €."
Con esto ya tienes el detector funcionando, sin automatizar nada. Filtra Calculo por Estado y ordena por Valor stock: esa es tu lista de la semana.
¿Qué hacer con el stock muerto según su clase ABC?
Mirar solo la venta engaña: hay referencias que venden mucho y dejan poco, y otras que venden poco y dejan mucho. Por eso la hoja calcula las dos clases. Una forma práctica de leerlas:
| Venta / margen | Qué suele significar | Qué hacer |
|---|---|---|
| A / A | El corazón de la tienda | Que nunca falte. Mejor sitio y vigilancia de roturas |
| A / C | Vende mucho, deja poco | Revisar precio y coste (sin confundir markup y margen). No es la que hay que promocionar |
| C / A | Vende poco, deja mucho | Exposición y venta sugerida. Puede subir si se ve |
| C / C con Vigilar | Se está parando | Cambiar de sitio, pack con una A, no volver a pedir |
| C / C con Muerto | Dinero parado | Traspaso a otra tienda, rebaja escalonada, devolución si el acuerdo lo permite, liquidar o donar |
Lo que no aparece en la tabla es la temporada y la fecha de entrada. Un abrigo sin ventas en septiembre no es lo mismo que en marzo, y una novedad de hace tres semanas no puede tener 90 días sin venta. Si tienes la fecha de entrada, añádela al Stock y excluye lo que lleva menos de 90 días en tienda. Lo que liberes de stock muerto vuelve a tu open to buy: dinero para comprar lo que sí se vende.
La IA solo explica: la instrucción
Una IA de lenguaje puede equivocarse sumando, redondeando o copiando una cifra, y no avisa. Por eso aquí no calcula: recibe la lista ya filtrada y ordenada (como mucho 25 filas) y redacta.
Eres la persona responsable de surtido de una tienda. Te paso una tabla YA CALCULADA con las referencias que tienen stock y llevan tiempo sin venderse: SKU, descripción, familia, clase ABC por venta, clase ABC por margen, días sin venta, unidades en stock y valor del stock a coste. No recalcules ni cambies ninguna cifra: si citas una, cópiala tal cual. Empieza con dos frases sobre el resumen. Después, para cada referencia, por orden de valor de stock, propone UNA acción de esta lista y explica en una frase por qué: traspasar a otra tienda, cambiar la ubicación o la exposición, hacer pack o venta cruzada con un producto A, rebaja escalonada, devolver al proveedor si el acuerdo lo permite, liquidar o donar, no volver a comprar. Si falta información para decidir (temporada, fecha de entrada, acuerdos con el proveedor), dilo en lugar de suponer. Máximo 25 líneas, en español de España.
La lista cerrada de acciones evita respuestas genéricas («optimiza tu inventario») y te deja propuestas que se pueden hacer el lunes. Las decisiones son tuyas: la IA no sabe qué acuerdos tienes con cada proveedor ni qué pasa en la tienda de al lado.
El envío automático de cada lunes
Dos formas de montarlo, con el mismo resultado:
- n8n con nodo de código: la plantilla lee las pestañas Ventas y Stock, hace los cálculos en un nodo de código (mismos criterios que las fórmulas de arriba), escribe el resultado en una pestaña Resultado y manda el correo. Útil si no quieres mantener fórmulas o tienes muchas referencias.
- Make leyendo la hoja: las fórmulas calculan y Make solo busca las filas en Vigilar o Muerto, lee la celda de resumen, llama a la IA y envía el correo.
En los dos casos, el correo empieza por el resumen de la hoja o del código, sigue con la lectura de la IA y termina con la tabla tal cual. Si la IA cita una cifra distinta de la tabla, lo ves en el mismo correo.
Resumen (de la hoja)
Muerto: 2 refs, 129 € a coste. Vigilar: 1 refs, 180 €.
Propuestas (borrador de la IA)
- 00318 Manta de sofá (180,00 €, 74 días, Vigilar): cambiar la ubicación o la exposición antes de que pase a Muerto. Es B por margen.
- 00560 Cojín terciopelo (90,00 €, sin venta): no volver a comprar. Sin fecha de entrada no sé si es una novedad: revisarlo antes de rebajar.
- 00412 Bufanda punto gris (38,50 €, 155 días): rebaja escalonada o pack con un producto A.
Lista completa
| SKU | Descripción | Valor stock | Estado |
|---|---|---|---|
| 00318 | Manta de sofá | 180,00 € | Vigilar |
| 00560 | Cojín terciopelo | 90,00 € | Muerto |
| 00412 | Bufanda punto gris | 38,50 € | Muerto |
Lo que queda manual en una tienda que trabaja con exportaciones: pegar cada semana los dos ficheros. Si tu TPV o Holded se conecta con Make o n8n, puedes automatizar también esa parte; empieza a mano hasta que confíes en las cifras.
Descarga las plantillas
Son una plantilla de partida, no probada en tu cuenta. Revisa las columnas, los días y los cortes, crea tus credenciales (no llevan ninguna clave) y compara el resultado con cinco referencias que conozcas bien antes de fiarte.
JSONFlujo n8n: stock muerto y ABC cada lunesCálculo en nodo de código, pestaña de resultado, lectura de la IA y correo.Descargar (.json) MDGuía Make: stock muerto y ABC cada lunesLas fórmulas calculan; Make filtra, llama a la IA y envía el informe.Descargar (.md)Si estás eligiendo herramienta, tienes la comparativa de Make, n8n y Zapier.
Cómo probarlo
- Diez referencias inventadas antes de pegar datos reales: tres que vendan mucho, unas con última venta hace 70 días, otras hace 120, una con stock y sin ventas, una sin stock.
- Comprueba a mano que el ABC tiene sentido: las tres grandes deben salir A, y la suma de las A debe rondar el 80 % de la venta.
- Comprueba el Estado: 70 días es Vigilar, 120 es Muerto, sin stock no se marca.
- Pega tus datos reales y mira cinco referencias que conozcas de memoria. Si alguna sale rara, casi siempre es la exportación.
- Lanza el envío a mano y lee el correo buscando una cosa: que la IA no haya cambiado ninguna cifra.
Fallos típicos y cómo arreglarlos
| Lo que pasa | Por qué suele ser | Cómo se arregla |
|---|---|---|
| Todo sale C o todo A | Venta neta como texto («1.234,56 €») | Quita el símbolo y el punto de miles al exportar o con Buscar y reemplazar; comprueba que la columna se alinea a la derecha |
| Días sin venta da #¡VALOR! | La fecha es texto, no fecha | Formato › Número › Fecha, o convierte con FECHANUMERO |
| Referencias que se venden salen sin ventas | SKU distinto entre pestañas (ceros delante, espacios) | Formato texto en las dos columnas de SKU y ESPACIOS() para limpiar |
| Novedades marcadas como Muerto | Llevan poco en tienda y aún no han vendido | Añade fecha de entrada y exclúyelas hasta los 90 días |
| Margen negativo o raro | Devoluciones, regalos o coste mal cargado | Revísalo en el sistema; la hoja las deja en C y el dato malo se ve |
| La IA cambia cifras o propone cosas imposibles | Recibe demasiadas columnas o le falta contexto | Máximo 25 filas, solo las columnas de la tabla, y la frase «no recalcules» |
| En la cadena, la exportación cambia de columnas | El informe de BI se ha modificado | Pega en una pestaña intermedia y mapea las columnas con BUSCARV por cabecera |
¿Y si trabajas en Excel?
Las fórmulas de la guía funcionan igual en Excel. La diferencia está en la IA y en el envío del lunes.
Excel, Copilot y Power Automate
Copilot en Excel, según tu licencia, puede explicar la lista de stock muerto y proponer acciones, igual que el paso de ChatGPT. Un flujo programado de Power Automate te la manda cada lunes por Outlook.
Sheets con Gemini
Si sigues en Google, Gemini en Sheets (Business Standard o superior) crea la tabla dinámica por clase ABC y el gráfico sin escribir fórmulas.
Más sobre Copilot en Copilot en Excel para ventas y stock.
Tu primer paso hoy
- Exporta ventas por referencia de los últimos doce meses y el stock de hoy, y pégalos en una hoja.
- Pon solo dos columnas: Días sin venta y Estado. En diez minutos tienes tu primera lista de stock parado.
- Elige las cinco referencias con más valor parado y decide una acción para cada una esta semana.
El stock muerto no se arregla con un informe. Se arregla cuando alguien lo ve a tiempo y decide qué hacer con él el lunes.
Preguntas frecuentes
¿60 y 90 días valen para cualquier tienda?
Son un punto de partida. En alimentación fresca son demasiado; en hogar o en productos de temporada larga, quizá poco. Ajusta los días por familia si tu surtido es muy distinto entre secciones, y revisa la rotación habitual de cada una.
¿Por qué no le paso el CSV entero a la IA y que lo calcule ella?
Porque puede equivocarse con las cuentas sin avisar, y con miles de filas es más probable. Las fórmulas o el código no se cansan ni redondean a su manera. La IA es buena explicando y proponiendo, y para eso le basta la lista final.
¿Cada cuánto tengo que actualizar los datos?
Una vez por semana es suficiente para el stock muerto. Si pegas las exportaciones el lunes a primera hora, el informe sale después con los datos de esa semana.
Trabajo en una cadena y la central ya hace ABC. ¿Para qué esto?
Para tu tienda o tu zona. El ABC de la cadena mezcla tiendas muy distintas. Con el informe que ya recibes, ves qué es A en la cadena y C en tu tienda, y llevas ese dato a la reunión con compras.
Fuentes
Consultadas en noviembre de 2026.
- Soporte de Microsoft: cómo funciona Copilot Chat en las aplicaciones de Microsoft 365. En Excel, Copilot ayuda a encontrar tendencias, crear gráficos y hacer previsiones a partir de una tabla; qué puedes usar depende de tu licencia. Copilot en Outlook está disponible para todos los suscriptores.
- Microsoft Learn: preguntas frecuentes sobre licencias de Power Automate. Las licencias de Microsoft 365 para empresas (Business Basic, Standard y Premium) incluyen flujos en la nube automáticos, programados y con botón, solo con conectores estándar, con un límite de 6.000 acciones al día.
- Ayuda de Google: Gemini en Hojas de cálculo. Crea tablas, fórmulas y gráficos, y genera análisis a partir de los datos de la hoja.
Para seguir: Cuadros de mando y KPIs automáticos · Stock muerto: qué es, cómo detectarlo y qué hacer con él · Programas e IA para controlar el stock de tu tienda: qué ofrece cada opción