Un bancale di farmaci scaduti non è solo un’occasione persa: è un costo doppio che azzanna il P&L.
Tra il valore della merce da svalutare e le fatture da pagare per lo smaltimento come rifiuto speciale, i margini bruciano in fretta.
Eppure, in molte aziende del settore Pharma, la gestione degli SLOBs (Slow-Moving and Obsolete Inventory) è ancora affidata a estrazioni manuali e fogli Excel che si rompono al primo aggiornamento. Questa guida va dritta al sodo: ecco come costruire un modello automatizzato, a prova di errore, che trasformi i dati del tuo ERP in decisioni immediate per il board.
Guida Pratica: Costruire un Modello SLOBs (Pharma Edition)
In un contesto regolato, un lotto scaduto è un doppio costo: perdita del valore del bene + costi di smaltimento come rifiuto speciale. Questo modello serve a prevenire il danno prima che diventi irreversibile.
👉 Supply Chain Analyst Pharma: cosa fa davvero (KPI, Excel, SLOB e strategie reali)
👉Excel & Python per l’analisi dei dati
1. Il Dataset di partenza (L’estrazione ERP)
Esporta da Business Central o SAP un report granulare. La chiave è il Lotto: nel pharma, due lotti dello stesso SKU hanno rischi diversi se scadono a 6 mesi di distanza.
| Colonna | Descrizione |
|---|---|
| SKU / Batch | Codice prodotto e identificativo lotto. |
| Expiry Date | La data di scadenza del lotto specifico. |
| On Hand | Giacenza fisica attuale. |
| Unit Cost | Costo standard o medio ponderato. |
| Avg Sales (M) | Media vendite mensili (consigliato rolling 6 mesi). |
2. Definire la logica di “Rischio”
Il cuore del modello è il confronto tra la velocità di uscita e il tempo residuo. La formula della copertura settimanale è il tuo indicatore di allerta:
[math]Weeks\_of\_Cover = \frac{Current\_Inventory}{Average\_Weekly\_Sales}[/math]
3. Il Motore di Calcolo (Formule Excel)
Crea queste colonne calcolate per automatizzare il giudizio del sistema:
- Mesi alla Scadenza:
=DATA.DIFF(OGGI(); [Data_Scadenza]; "m") - Valore a Rischio (€):
=[Giacenza] * [Costo_Unitario] - Status (Logica IFS):
=PIÙ.SE([Mesi_Scadenza] < 6; "High Risk - Expiring"; [Sales_6M] = 0; "Dead Stock"; [Copertura_Mesi] > 12; "Slow Moving"; VERO; "Healthy")
4. Visualizzazione per il Board (Il “So What?”)
Al management non servono i dettagli tecnici, servono i punti di pressione. Costruisci una Pivot con:
- Analisi per Categoria: Quanti € abbiamo in “Dead Stock”? (Azione: Write-off immediato per risparmiare tasse/spazio).
- Top 10 SKU a Rischio: I “Big Losers” su cui i Sales devono fare promozioni ieri.
- Aging Bucket: Istogramma che mostra lo stock diviso per mesi di vita residua (0-3, 3-6, 6-12, >12).
Esempio:
1. Pivot Analysis per Categoria: Il “Cimitero” dello Stock
Questa Pivot serve a pulire il bilancio. Identifichiamo il Dead Stock (merce ferma da >6 mesi senza forecast) per proporre il write-off (svalutazione).
| Categoria Prodotto | Valore Totale (€) | di cui Dead Stock (€) | % Impatto su Magazzino | Azione Suggerita |
| Antibiotici | 450.000 | 12.000 | 2,6% | Monitoraggio lotti |
| Antinfiammatori | 210.000 | 85.000 | 40,4% | Write-off Immediato |
| Vaccini | 180.000 | 5.000 | 2,7% | OK |
| TOTALI | 840.000 | 102.000 | 12,1% |
2. Top 10 SKU a Rischio: I “Big Losers”
Qui mettiamo i nomi e i cognomi. Sono i prodotti che hanno ancora un mercato, ma i cui lotti scadranno prima di essere venduti (come visto nel tuo grafico Burn-down).
-
SKU PH-992 (Antidolorifico X): 45.000 € a rischio (Scadenza: Giugno ’26).
-
SKU PH-104 (Sciroppo Y): 38.000 € a rischio (Scadenza: Luglio ’26).
-
… (fino al decimo)
L’azione per i Sales: “Avete 90 giorni per piazzare questi 45k di Antidolorifico X, o il costo dello smaltimento verrà addebitato sul bonus di fine anno del reparto commerciale.” (Forse un po’ aggressivo, ma efficace).
3. Aging Bucket: La “Mappa del Tempo”
Questo istogramma è fondamentale per il Finance per capire quanto sarà profondo il “buco” nei prossimi mesi.
0-3 Mesi: “Codice Rosso” (Impossibile vendere ai distributori, solo donazioni o distruzione).
3-6 Mesi: “Codice Arancio” (Promozioni aggressive / Canali Export).
6-12 Mesi: “Codice Giallo” (Gestione ordinaria con attenzione).
12 Mesi: “Safe Zone”.

💡 Consiglio da Analista: Occhio ai “Fantasmi”
Nel Pharma, il 3PL (terzista logistico) comanda. Se l’ERP dice che hai 100 pezzi ma il 3PL ne ha 80 (o peggio, li ha bloccati per qualità senza che tu lo sappia), il tuo modello SLOBs mentirà. La Riconciliazione Stock è la base di cemento armato su cui poggia questo castello.
Automatizzare il Report SLOBs con Power Query
Dimentica il lavoro manuale del lunedì mattina. Power Query agisce come un ETL (Extract, Transform, Load) integrato: definisci le regole una volta, e lui le esegue ogni volta che clicchi “Aggiorna”.
1. Connessione Intelligente (Da Cartella)
Invece di importare un singolo file, connetti Excel all’intera cartella dove depositi le estrazioni dell’ERP.
- Percorso: Dati > Recupera dati > Da file > Da cartella.
- Vantaggio: Power Query può essere istruito per ordinare i file per “Data di creazione” e prelevare sempre il più recente. Non dovrai mai più rinominare i file scaricati dall’ERP.
2. La Pipeline di Trasformazione
Nell’editor di Power Query, ogni azione diventa un “Passaggio applicato”. Se i dati sorgente hanno colonne extra o formati sporchi, li sistemiamo qui una volta per tutte:
- Data Shaping: Rimuovi le colonne che non servono al Finance (es. descrizioni logistiche lunghe) e tieni solo SKU, Lotto e Scadenza.
- Data Typing: Forza il formato “Data” sulla colonna Scadenza. In Power Query, questo previene l’errore classico di Excel che legge le date come testo o numeri seriali.
- Filtri di Efficienza: Imposta un filtro per escludere le righe con
Giacenza <= 0. Il tuo modello analizzerà solo ciò che esiste fisicamente.
3. Il Merge (Addio CERCA.VERT)
Il Merge è molto più potente di un CERCA.VERT: gestisce migliaia di righe senza rallentare il file e ti permette di unire i dati della Giacenza (3PL) con i dati di Vendita (Sales Report) in un colpo solo.
Utilizzando un Left Outer Join, puoi vedere istantaneamente se ci sono lotti in magazzino che non hanno alcuna corrispondenza nel report vendite (potenziali Dead Stock dimenticati dai Sales).
4. Logica Dinamica: Mesi alla Scadenza
Puoi calcolare la vita residua del lotto direttamente in Power Query usando il linguaggio M o l’interfaccia guidata:
Aggiungi colonna > Colonna personalizzata
Duration.TotalDays([Scadenza] – DateTime.LocalNow()) / 30
Questa colonna si ricalcolerà basandosi sulla data odierna ogni volta che aggiorni il report.
5. Il Refresh in un Click
Una volta cliccato su Chiudi e Carica, il tuo lavoro manuale è finito per sempre. Il lunedì successivo ti basterà:
- Copiare il nuovo export nella cartella.
- Aprire Excel e cliccare Dati > Aggiorna tutti.
🚀 Il Vantaggio Strategico
Automatizzando la preparazione, riduci il Lead Time dell’analisi. Se prima impiegavi un’ora per preparare i dati, ora hai quell’ora per chiamare il Sales Manager e dirgli: “Il lotto X scade tra 5 mesi e a questo ritmo ne butteremo via il 40%. Dobbiamo agire ora.”
Nota: Se l’azienda usa Business Central, chiedi al reparto IT l’URL del servizio OData. Puoi connettere Power Query direttamente alle tabelle del database, eliminando anche il download manuale dei file Excel.
Allerta Visiva: Il Semaforo del Rischio Scadenze
In magazzino, 90 giorni alla scadenza rappresentano il “point of no return”. Configurare un’allerta visiva automatica trasforma una lista passiva in un sistema di Early Warning che urla priorità ogni volta che il file viene aperto.
1. La “Formula Magica” per l’Intera Riga
Non limitarti a colorare solo la cella della data. Per un impatto visivo reale, vogliamo che l’intera riga cambi colore. Supponiamo che la tua tabella parta dalla riga 2 e la data di scadenza sia nella colonna E.
- Seleziona tutti i dati della tua tabella (es. da A2 a Z1000).
- Vai su Home > Formattazione condizionale > Nuova regola.
- Scegli “Utilizza una formula per determinare le celle da formattare”.
- Inserisci la formula:
=$E2 <= OGGI() + 90
Nota: Il simbolo $ davanti alla E è fondamentale: blocca il controllo sulla colonna della data mentre Excel applica il colore a tutte le colonne della riga.
2. Impostare il “Semaforo Pharma” a 3 Livelli
Gestire il rischio significa anticiparlo. Imposta queste tre regole nell’ordine indicato (gestibile da Formattazione Condizionale > Gestisci Regole):
| Priorità | Colore | Formula Excel | Significato Operativo |
|---|---|---|---|
| 1 | ROSSO | =$E2 <= OGGI()+90 |
CRITICO: Bloccare o svendere subito. |
| 2 | GIALLO | =$E2 <= OGGI()+180 |
WARNING: Monitoraggio attivo/Promo. |
| 3 | VERDE | =$E2 > OGGI()+180 |
OK: Stock sicuro per il prossimo semestre. |
3. Il Tocco Final: La Colonna “Risk Level”
I colori sono ottimi per l’occhio, ma i filtri sono migliori per l’analisi. Crea una colonna calcolata (meglio se direttamente in Power Query) per categorizzare il rischio in modo testuale:
=PIÙ.SE([@Scadenza] <= OGGI()+90; “CRITICO”; [@Scadenza] <= OGGI()+180; “WARNING”; VERO; “OK”)
⚠️ Attenzione all’Ordine delle Regole
In Excel, le regole vengono lette dall’alto verso il basso. Se metti la regola del Giallo sopra quella del Rosso, tutto lo stock critico diventerà giallo (perché 90 è minore di 180). Assicurati sempre che la regola più restrittiva (il Rosso) sia la prima della lista.
Perché questo approccio vince?
Perché trasforma una domanda complessa (“Quanto perdiamo nel prossimo trimestre?”) in un’operazione da due secondi: Filtra per “CRITICO” > Leggi il totale in fondo. Hai appena dato al tuo CFO un numero certo su cui basare le svalutazioni di bilancio.
Costruire il Burn-down Chart delle Scadenze
Il grafico Burn-down applicato allo stock e alle scadenze è lo strumento di comunicazione visiva più potente che un analista possa portare in una riunione di Sales & Operations Planning (S&OP).
Mentre una tabella mostra numeri astratti, questo grafico mostra una scadenza temporale liquida: rende evidente a tutti quando il capitale immobilizzato si trasformerà letteralmente in fumo (costo di distruzione).
Ecco come impostare la logica e la costruzione del grafico su Excel partendo dai dati del tuo modello SLOBs.
L’obiettivo di questo grafico è mostrare la “morte termica” dei tuoi lotti: come la quantità di farmaco vendibile diminuisce forzatamente man mano che passano i mesi e subentrano le scadenze.
1. Preparazione dei Dati (La logica del Cumulato Inverso)
Per un Burn-down classico, non vogliamo vedere quanta merce scade in un singolo mese (quello sarebbe un istogramma standard). Vogliamo vedere lo stock totale spendibile che si riduce. Abbiamo bisogno di due serie storiche proiettate nel futuro:
- Serie 1: Stock Residuo Vendibile (Gradini a scendere). Si parte dal valore totale del magazzino oggi. Man mano che passano i mesi, sottraiamo il valore dei lotti che scadono in quel determinato mese.
- Serie 2: Forecast di Vendita Cumulato (Linea a salire). Si parte da zero e si somma, mese dopo mese, la previsione di vendita (es. vendite medie mensili storiche o il budget della domanda).
Come farlo al volo in Tabella Pivot:
- Crea una Pivot con il Mese di Scadenza nelle righe e la somma del Valore Stock nei valori.
- Fai click destro sul valore numerico nella Pivot > Mostra valori come > Totale parziale in… e seleziona il campo della data. (In questo modo vedrai lo stock che sale; per farlo scendere, ti basterà creare una colonna d’appoggio fuori dalla pivot con la formula:
= Stock_Totale - Cella_Pivot).
2. Creare il Grafico Combinato
Per rendere il grafico intuitivo al primo sguardo anche per un non-tecnico, usa due stili diversi per le due serie:
- Lo Stock Residuo come “Area”: Seleziona la serie dello stock e impostala come grafico ad Area (meglio se con un colore pieno semitrasparente). Darà l’idea fisica di un blocco di ghiaccio che si scioglie.
- Il Forecast di Vendita come “Linea”: Sovrapponi una linea (es. spezzata o tratteggiata di colore scuro) che parte dall’origine (0) e sale diagonalmente verso destra.

3. Come leggere l’Incrocio (Il “Gap” di Distruzione)
Questo grafico si spiega da solo durante le presentazioni grazie alla lettura geometrica degli spazi:
Scenario Ottimale
La linea delle vendite interseca l’area dello stock prima che la curva scenda. Significa che il mercato “mangia” il prodotto più velocemente di quanto il tempo lo faccia scadere. Zero SLOBs.
Scenario di Rischio
L’area dello stock rimane sopra la linea delle vendite e “sborda” verso destra. Quel triangolo di spazio vuoto tra lo stock alto e la vendita bassa è il tuo valore di distruzione monetario.
4. La Target Line (Residual Shelf Life)
Nel Pharma esiste una regola non scritta ma rigidissima: i grandi distributori o gli ospedali non accettano merce che abbia meno di 6 o 12 mesi di vita residua. Se un lotto scade tra 5 mesi, per il cliente finale è già “scaduto”.
Aggiungi una terza serie al grafico (una linea verticale o un’area d’ombra) che indichi il limite di -6 mesi rispetto alla scadenza reale. Quello è il tuo vero punto di arrivo: se non vendi lo stock entro quella linea, non potrai più spedirlo e rimarrà incagliato nel tuo magazzino.
💡 L’intuizione dell’Analyst: Un grafico Burn-down estremamente piatto o lungo è un falso positivo. Significa che non rischi di buttare via merce nell’immediato, ma rivela che stai immobilizzando capitale in lotti enormi che non ruotano. L’efficienza perfetta è una linea di vendita che “sfiora” la discesa dello stock appena prima del punto di azzeramento.
📊 Executive Summary: Analisi Rischio Stock & Obsolescenza (SLOBs)
Data: 30 Marzo 2026 | Focus: Divisione Pharma | Analista: [Tuo Nome]
🚨 Esposizione Finanziaria Critica (Window 90gg)
Abbiamo individuato [X] € di stock con scadenza inferiore ai 3 mesi (Livello Rosso). Il [X]% di questo rischio è concentrato su soli 5 SKU. Senza un’azione di smaltimento o promozione entro 15 giorni, il valore si trasformerà in perdita secca per svalutazione.
📉 Analisi “Slow Moving” vs Forecast
Il Burn-down chart evidenzia una divergenza critica tra il piano vendite e l’uscita reale dei lotti. La nostra copertura attuale per i codici [Inserire Codici] è di [X] settimane, superando il target di [X]. È necessario un allineamento urgente con il Sales Team per revisionare le stime di vendita del prossimo trimestre.
📦 Efficienza 3PL e Costi Operativi
Il [X]% della giacenza esterna è classificata come “Dead Stock” (zero vendite > 6 mesi). Questo stock “fantasma” satura la capacità del magazzino e genera costi fissi inutili. Suggerisco l’avvio della procedura di distruzione per i lotti già scaduti o non conformi.
✅ Punto di Azione Suggerito
Richiedo l’inserimento di una sessione straordinaria nel prossimo S&OP Meeting per definire la strategia di Clearance sui top 10 SKU critici, proteggendo il margine di fine anno.
💡 Perché questo summary garantisce la lettura?
-
Mette il prezzo all’incertezza: Non parli di “molto stock”, ma di un valore monetario preciso che impatta il bilancio (P&L).
-
Identifica i “colpevoli”: Ridurre il problema a “5 SKU” lo rende immediatamente gestibile e meno scoraggiante.
-
Propone la soluzione: Non sei solo il portatore di cattive notizie, ma colui che propone il processo (S&OP) per risolverle.
🚀 Il tocco finale del professionista
Se invii questo summary via email:
-
Oggetto:
URGENTE: Rischio Obsolescenza Q2 - Impatto potenziale [X] € -
Allegato: Incolla lo screenshot del grafico Burn-down direttamente nel corpo della mail. È l’unica immagine che il Direttore Supply Chain guarderà davvero per capire la gravità della situazione in un istante.
Analisi Tecnica: Perché questo modello è superiore?
1. Power Query Merge vs Excel VLOOKUP
Nel Pharma, i database ERP superano facilmente le 50.000 righe. Utilizzare il Left Outer Join in Power Query invece del classico CERCA.VERT (VLOOKUP) non è solo una scelta di stile, ma di performance:
- Efficienza Computazionale: Il carico viene spostato al Mashup Engine di Power Query. Il file Excel rimane leggero e non ricalcola ogni cella a ogni modifica, evitando i crash durante i meeting critici.
- Rilevamento Anomalie: Il Left Join fa “galleggiare” il Dead Stock. Se un lotto esiste fisicamente ma non ha storico vendite, l’unione genererà un valore null, creando un alert immediato che un semplice cerca.vert potrebbe mascherare o ignorare.
2. La Gerarchia Logica del PIÙ.SE (IFS)
L’uso della funzione PIÙ.SE per definire lo Status mima un albero decisionale aziendale rigido. Impostando il limite dei 6 mesi come prima condizione, stabiliamo una gerarchia di rischio:
“Il rischio normativo e di scadenza batte sempre la logica commerciale.”
Anche se un farmaco ha vendite altissime, se la scadenza è imminente, il rischio è sistemico. La formula forza il management a guardare prima il problema legale/sanitario e solo dopo quello di fatturato.
3. Dinamismo del Burn-down Chart
Questo grafico è il cuore strategico del modello perché traduce un dato statico (la giacenza) in un concetto dinamico: il tempo che consuma il valore. Mettere in contrapposizione le vendite che salgono e lo stock che “scade” scendendo permette al team S&OP di individuare visivamente il Break-even point temporale.
Non è più una discussione su “quanti pezzi abbiamo”, ma su “quanto tempo ci rimane” prima che il valore diventi zero.





