La gestione dei turni 2: le check list sulle presenze

Nella prima parte di questa serie ho mostrato il modello che uso per la compilazione e la presentazione dei turni, in questa parte mostrerò come uso Excel per ottenere le indicazioni sul rispetto delle necessità di presenza.

Esigenza probabilmente comune a tante realtà, avevo bisogno di qualcosa che mi avvisasse quando nella programmazione c’erano dei giorni in cui i dipendenti messi in servizio erano troppo pochi, e quindi le attività da svolgere non erano “coperte”, oppure se i dipendenti in servizio erano troppi, e quindi in poco tempo mi sarei trovato a dover gestire un esubero di congedi e riposi da gestire.

La soluzione che ho adottato prevede l’automazione di due passaggi:

  • il conteggio giornaliero dei dipendenti messi in servizio per tutte le attività
  • la segnalazione in caso di anomalie tra il conteggio e il numero di dipendenti previsto

Il conteggio delle presenze

Sotto il tabellone dei turni, ho aggiunto per comodità il calendario copiandolo da quello principale (esempio, in C28: “=C4”) e ho creato dei campi per ogni attività da campionare: turni di mattina/a giornata, primo turno, turni di pomeriggio, reperibilità feriali, prefestive, festive, diurne e notturne.

L’attività a giornata è il momento di maggior impegno per il reparto. In linea di massima, il numero delle presenze necessarie dipende dall’attività normalmente prevista diminuito da eventuali chiusure di attività straordinarie, per esempio per manutenzione di un’apparecchiatura. Definire il numero di presenze per questa fascia oraria in realtà non è facile perché entrano in gioco fattori anche pesanti e non programmabili come le malattie, i carichi di lavoro straordinari dell’urgenza, l’attività delle sale operatorie, la qualità del personale in servizio e molto altro ancora. Per questa attività più complessa ho creato 3 campi: chiusure, fabbisogno e mattina.

Ho aggiunto poi i campi di tutte le attività da monitorare che sono molto più semplici da implementare perché hanno regole di presenza fisse:

A questo punto ho inserito le formule per i conteggi. Queste possono essere formule più o meno complesse in base al numero dei turni da contare: se le sigle da contare sono poche, si può risolvere con una semplice formula di CONTA.SE. Per esempio, questa formula conta tutti i turni 1 e B nell’intervallo C8:C22:

“=CONTA.SE(C8:C22;1)+CONTA.SE(C8:C22;”B”)”

Quando il numero delle sigle da contare cresce, si possono usare formule più complesse come quelle matriciali che rendono la formula sintetica e facile da editare al bisogno (per esempio, per aggiungere o togliere turni). Quella che segue conta tutte le sigle 1, 3, 4, C, tutti i turni che iniziano con la lettera B e tutti i turni che iniziano con 1 nell’intervallo C8:C22:

“=MATR.SOMMA.PRODOTTO(CONTA.SE(C8:C22;{“1″.”3″.”4″.”B*”.”C”.”1*”}))”

La formula sotto invece sfrutta un intervallo di appoggio dove si inseriscono i turni da contare, lo si denomina (sotto ho usato il nome Turni.Mat.Tot) e si usa tale nome nella formula. Al bisogno è possibile variare velocemente le sigle nell’intervallo per variare il comportamento della formula:

“=MATR.SOMMA.PRODOTTO(CONTA.SE(C8:C22;Turni.Mat.Tot))”

Tra le due formule matriciali, la prima è più semplice da implementare e immediata, la seconda permette una maggiore flessibilità, nel dubbio consiglio la prima.

Per capire l’uso, vediamo un’applicazione delle formule nel contesto più impegnativo, quello della mattina. Chiusure è il campo dove inserisco le sigle per indicare le attività chiuse nella giornata, tipo “R” sta per chiusura giornaliera della risonanza, “r” per la chiusura pomeridiana della risonanza. Fabbisogno è il campo dove inserisco il numero di persone previsto.

In Mattina quindi bisogna contare tutti i turni previsti per la mattina e a giornata, e poi al risultato del conteggio è sufficiente sottrarre il fabbisogno previsto per avere il resoconto della situazione. In C32 ho inserito quindi questa formula:

“=MATR.SOMMA.PRODOTTO(CONTA.SE(C8:C22;{“1″.”3″.”4″.”B*”.”C”.”1*”}))-C31″

Usando le formule viste sopra, ho aggiunto poi il conteggio su tutte le altre attività:

La segnalazione delle anomalie

Per i motivi già esposti, ho fatto in modo che nel campo Mattina fosse evidenziato:

  • in rosso le giornate con un numero insufficiente di personale
  • in verde le giornate dove potevo contare su un’unità di supporto
  • in arancione le giornate con esuberi

In questo caso ho usato le regole di formattazione predefinite:

Le regole per i campi successivi sono simili tra loro perché hanno regole di presenza fisse e sono tutte composte dalla combinazione di poche funzioni. Mi limiterò quindi a mostrare una sintesi delle regole per capire come lavorano le funzioni usate: in questo modo credo che ognuno che decide di usare un approccio simile al mio sarà in grado di trovare (con un po’ di impegno) le formule giuste per il proprio contesto.

Le funzioni usate per costruire le formule che determinano le celle da formattare sono:

  • GIORNO.SETTIMANA per ottenere il giorno della settimana corrispondente a una data (usando l’argomento 2, i giorni vengono espressi con un numero intero compreso tra 1, lunedì, e 7, domenica)
  • CONTA.SE per contare il numero di celle che soddisfano un determinato criterio
  • la funzione logica O che restituisce VERO se una delle condizioni è soddisfatta
  • la funzione logica E che restituisce VERO se tutte le condizioni sono soddisfatte
  • la funzione logica NON che restituisce VERO se la condizione non è soddisfatta
  • VAL.NUMERO che restituisce VERO quando incontra un numero, usata con RICERCA (non sensibile al maiuscolo/minuscolo) e TROVA (sensibile al maiuscolo/minuscolo) per cercare un carattere all’interno di una cella.

Per capire le ultime funzioni nominate ho fatto un esempio qui sotto, nelle celle che mostrano VERO/FALSO ho inserito le formule di destra:

Consiglio è di testare subito ogni formula immessa inserendo nel turno la condizione da testare. Per esempio, nel caso un turno preveda una presenza nelle sole giornate di domenica o festivo servono due formule, una verifica che, se il giorno è domenica o festivo, il conteggio non sia diverso da zero, l’altra formula verifica che, se il giorno non è nè domenica nè festivo, il conteggio non sia diverso da 1. Per testare una formula si tolgono tutti i turni per vedere se sono segnalate solo domeniche o festivi, poi si mettono in ogni giorno un turno e per vedere se sono segnalate tutte le giornate tranne domeniche e festivi:

Ricordando che una formula nidificata viene risolta partendo dalla funzione più interna (se volete capire come ragiona Excel potete inserire la formula di formattazione condizionale direttamente in una cella, selezionarla e poi usare la funzione Formule > Valuta formula) e che Excel applica la formattazione se la formula inserita restituisce VERO, vediamo qualche esempio di combinazione delle funzioni:

Turno B, è prevista una presenza tutti i giorni della settimana tranne la domenica e i festivi:

“=E(O(GIORNO.SETTIMANA(C$4;2)=7;CONTA.SE(FEST;C$4));C$32<>0)” restituisce VERO se la data è domenica o un festivo, e se il conteggio è diverso da zero.

“=E(GIORNO.SETTIMANA(C$4;2)<>7;CONTA.SE(FEST;C$4)=0;C$32<>1)” restituisce VERO se la data è diversa da domenica e non è giorno festivo e il conteggio è diverso da 1.

Fer.pom, sono previste due presenze dal lunedì al venerdì, una presenza il sabato e nessuna presenza la domenica o il festivo. Abbiamo tre condizioni quindi abbiamo bisogno di tre formule:

“=E(O(GIORNO.SETTIMANA(C$4;2)>6;CONTA.SE(FEST;C$4));C$34<>0)” restituisce VERO quando la data è domenica o festivo, e il conteggio è diverso da zero.

“=E(GIORNO.SETTIMANA(C$4;2)=6;CONTA.SE(FEST;C$4)=0;C$34<>1)”, restituisce VERO quando la data è sabato e non è festivo e il conteggio è diverso da 1.

“=E(GIORNO.SETTIMANA(C$4;2)<6;CONTA.SE(FEST;C$4)=0;C$34<>2)”, restituisce VERO se la data è da lunedì a venerdì e non è festivo e il conteggio è diverso da 2.

Turno Rep.fer.not, è prevista una presenza dal lunedì al venerdì tranne nei giorni festivi e prefestivi (nell’intervallo FEST ho inserito il Capodanno dell’anno successivo in modo che Excel riconosca il 31/12 come prefestivo):

“=E(O(GIORNO.SETTIMANA(C$4;2)>5;CONTA.SE(FEST;C$4);CONTA.SE(FEST;C$4+1));C$35<>0)” restituisce VERO quando la data è o sabato o domenica o è un festivo o è un prefestivo, e il conteggio è diverso da zero.

“=E(GIORNO.SETTIMANA(C$4;2)<=5;CONTA.SE(FEST;C$4)=0;CONTA.SE(FEST;C$4+1)=0;C$35<>1)” restituisce VERO quando la data è da lunedì a venerdì e non è un festivo e non è un prefestivo e il conteggio è diverso da 1.

Turno 1Ri: questa diagnostica lavora su due turni, uno di mattina e uno di pomeriggio, e le chiusure possono essere o tutto il giorno (“R”) o solo il pomeriggio (“r”).

Qui è prevista una presenza di mattina dal lunedì al venerdì a meno che la diagnostica non sia chiusa tutto il giorno:

“=E(O(GIORNO.SETTIMANA(C$4;2)>5;CONTA.SE(FEST;C$4);VAL.NUMERO(TROVA(“R”;C$30)));C$40<>0)” restituisce VERO quando la data è sabato o domenica o in un giorno festivo o in Chiusure è stata inserita una “R” (maiuscola), e il conteggio è diverso da zero.

“=E(GIORNO.SETTIMANA(C$4;2)<=5;CONTA.SE(FEST;C$4)=0;NON(VAL.NUMERO(TROVA(“R”;C$30)));C$40<>1)” restituisce VERO se la data è tra lunedì e venerdì, e non è un festivo, e nel campo chiusure non c’è una “R” (maiuscola) e il conteggio è diverso da 1.

Turno 1P: è la stessa diagnostica di prima, è prevista una presenza pomeridiana il martedì, il mercoledì e il giovedì a meno che la diagnostica di pomeriggio non sia chiusa. Qui serve una formula non sensibile alle maiuscole/minuscole, perché di pomeriggio è chiusa sia che in Chiusure ci sia “R” che “r”:

“=E(O(GIORNO.SETTIMANA(C$4;2)=1;GIORNO.SETTIMANA(C$4;2)>=5;CONTA.SE(FEST;C$4);VAL.NUMERO(RICERCA(“R”;C$30)));C$41<>0)” restituisce VERO quando la data è lunedì o venerdì o sabato o domenica o in un giorno festivo o in Chiusure c’è “r” o “R”, e il conteggio è diverso da zero.

“=E(GIORNO.SETTIMANA(C$4;2)>1;GIORNO.SETTIMANA(C$4;2)<5;CONTA.SE(FEST;C$4)=0;NON(VAL.NUMERO(RICERCA(“R”;C$30)));C$41<>1)” restituisce VERO quando la data cade di martedì, mercoledì o giovedì, e non è un giorno festivo, e in Chiusure non c’è né “R” né “r”, e il conteggio è diverso da uno.

Le formattazioni grafiche

Ho aggiunto ancora qualche regola: l’evidenziazione delle celle “anomale” con riempimento rosso e testo nero, ho applicato la formattazione del calendario già vista nel precedente articolo con il riempimento dei sabati, domeniche e festivi in grigio e testo in grigio facendo attenzione che la regola sia in fondo alla lista di regole, cioè venga applicata prima delle altre (attenzione!):

Ho impostato poi il colore del testo dei conteggi in bianco, in questo modo ho reso visibili solo le anomalie. Sotto il risultato finale: la prima immagine mostra la fase iniziale di stesura del turno dove sono state inserite solo le Chiusure e il Fabbisogno, la seconda immagine mostra una fase avanzata della stesura in cui tanti “allarmi” sono ormai spenti:

 Attenzione a non esagerare con la formattazione condizionale e con le formule matriciali perché sono pesanti da gestire per Excel.

Qui potete scaricare il file Excel usato nell’articolo: Turni-Post2 (11 download)

Buon lavoro!

Questa voce è stata pubblicata in Excel e contrassegnata con , , , . Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *