Non mi cimento sulla macro, visto che Flash e' gia' andato avanti (vedi messaggio sopra), quindi ti propongo una ipotesi di soluzione con formule.
Secondo me pero' non puoi fare quelle elaborazioni sul solo Cognome, ma devi usare la Matricola, che fortunatamente nel foglio TotaleBuoni e' gia' presente.
Devi metterlo anche su PresenzeGiornaliere; es lo metti in col H, mentre in col I inserirai il Cognome, cosi' che le formule Cerca.Vert useranno I invece di H.
Per usare convenientemente le formule dovrai fare alcune modifiche al layout del foglio " PRESENZE GIORNALIERE":
-inserisci in col D la data; puoi farlo inserendo in D3 la formula
- Codice: Seleziona tutto
=SE(VAL.NUMERO(L2);L2;D2)
da copiare poi verso il basso.
-in B10 calcoli la riga dove in TOTALE BUONI esiste, per quella data un valore diverso da zero, con la formula
- Codice: Seleziona tutto
=PICCOLO((SE(VAL.ERRORE(SCARTO('TOTALE BUONI'!$F$6;0;GIORNO(D10)-1;20;1));"";SE(SCARTO('TOTALE BUONI'!$F$6;0;GIORNO(D10)-1;20;1)>0;RIF.RIGA(F$6:F$25);"")));CONTA.SE(D$1:D10;D10)-5)
Da confermare con Contr-Maiusc-Enter (non solo Enter) e poi copiare verso il basso.
-in Col H abbiamo detto che inseriremo la Matricola, quindi cambia l' intestazione in H8, H52, etc
-in H10 calcoli la matricola con la formula
- Codice: Seleziona tutto
=INDICE('TOTALE BUONI'!B:B;$B10)
-in G10 calcoli la Qualifica con la formula
- Codice: Seleziona tutto
=INDICE('TOTALE BUONI'!C:C;$B10)
-l' orario oggi lo prelevi da INSERIMENTO TURNI partendo dal Cognome; se vuoi continuare a farlo (assicurandoti che mai due persone con lo stesso cognome faranno parte della vostra organizzazione) modifica leggermente la formula in J10 in
- Codice: Seleziona tutto
=SE(H10="";"";CERCA.VERT(I10;'INSERIMENTO TURNI'!$B$1:$BN$126;4;FALSO))
-idem per il N° di col K, salvo che io propongo di estrarlo da foglio TOTALE BUONI con la formula
- Codice: Seleziona tutto
=SCARTO(INDICE('TOTALE BUONI'!E:E;$B10);0;GIORNO(D10))
-non ho capito la colonna F
-a questo punto copia le formule di riga 10 verso il basso su tutto il giorno
-copi poi le formule di giorno 1 e le incolli su giorno 2 (selezioni F54, Contr-v), giorno 3 (selezioni F100, Contr-v), etc.
-infine selezioni tutte le colonne F:K e imposti una formattazione condizionale con la Condizione1=La formula e', come formula userai
=Val.Errore(F1), come formato imposterai il colore del carattere pari al colore dello sfondo, per rendere invisibili le scritte di Errore. MA PRIMA dovrai eliminare l' unione celle su riga 1 e riga 2
Ovviamente ritengo una soluzione macro piu' logica, ma ho voluto mostrare come le funzioni di excel possono essere combinate per ottenere risultati anche complessi.
Ciao