Risultati da 1 a 5 di 5

Discussione: sviluppo matrice turni con rotativo settimanale



  1. #1
    L'avatar di kroma
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Lecce
    Messaggi
    23
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0

    sviluppo matrice turni con rotativo settimanale

    Ciao a tutti, vorrei sviluppare una matrice turni abbandonando la procedura semi-manuale sin qui utilizzata.

    Il mio ragionamento: sviluppare il rotativo settimanale per poi passare a quello giornaliero.

    Partendo dal rotativo, che si basa su 20 settimane e quindi 20 posizioni, ho provveduto a creare un nuovo prospetto in un nuovo foglio (sviluppo posizioni) mettendo in ordine le posizioni dalla 1 alla 20. Per cui se lunedì 7 marzo Aldo era in posizione 1 la settimana successiva sarà in posizione 2 e così via per tutti gli altri. Naturalmente, visto che dopo la 20a settimana (posizione 20) si ritorna alla 1a, ho dovuto tener conto anche di questa condizione. Si qui tutto ok e formula elementare, ma semplice ed efficace.

    Ho quindi aggiunto un nuovo foglio (sviluppo turni) nel quale dovrei riportare lo sviluppo dei turni per tutti i giorni della settimana. Continuo a provare diverse soluzioni senza trovare un metodo giusto, ma tutto si è di colpo complicato. Sono certo che le mie conoscenze non mi consentano di proseguire senza il vostro aiuto e temo di essere sulla strada sbagliata :262:

    allego file di prova e ringrazio anticipatamente chiunque volesse aiutarmi
    File Allegati File Allegati

  2. #2

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4016
    Versione Office
    2013
    Likes ricevuti
    1225
    Likes dati
    923
    Ciao Kroma,
    non son sicuro di aver interpretato bene la "rotatività"...comunque, nella C3 del foglio "sviluppo turni" prova ad inserire questa formula matriciale (quindi da confermare con la combinazione di tasti CTRL+MAIUSC+INVIO) e dopo copia la cella C3 in basso e a destra:

    =INDICE(rotativo!$C$4:$I$23;INDICE('sviluppo posizioni'!$A$1:$V$118;MAX(('sviluppo posizioni'!$A$1:$A$118<='sviluppo turni'!$A3)*RIF.RIGA($A$1:$A$118));CONFRONTA('sviluppo turni'!C$2;'sviluppo posizioni'!$A$2:$V$2;0));RESTO(RIF.RIGA(A1)-1;7)+1)&""

    Controlla per vedere se mi sono perlomeno avvicinato a quello che intendevi.

    Ti riallego il file...
    File Allegati File Allegati

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  3. I seguenti utenti hanno dato un "Like"


  4. #3
    L'avatar di kroma
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Lecce
    Messaggi
    23
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0
    Più che avvicinato, l'hai preso in pieno!
    Grazie cromagno, sarei ancora più contento se mi aggiungessi un piccolo commento in modo che io possa almeno capire il tuo ragionamento e le funzioni che hai utilizzato.

  5. #4

    L'avatar di cromagno
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Sardegna
    Età
    37
    Messaggi
    4016
    Versione Office
    2013
    Likes ricevuti
    1225
    Likes dati
    923
    Citazione Originariamente Scritto da kroma Visualizza Messaggio
    Più che avvicinato, l'hai preso in pieno!
    Grazie cromagno, sarei ancora più contento se mi aggiungessi un piccolo commento in modo che io possa almeno capire il tuo ragionamento e le funzioni che hai utilizzato.
    Ciao,
    ci provo ma non sono il mio forte le spiegazioni...:186:

    Partendo dalla cella C3:
    quello che mi serve è sapere per ogni lavoratore quale sia la sua turnazione in base alla data (colonna A) e alla turnazione settimanale (1,2,3,...20) che prenderò dalla tabella nel foglio "sviluppo posizioni".

    Usando la funzione INDICE, prendo come range di riferimento le turnazioni nel foglio "rotativo" (range $C$4:$I$23) e dovrò specificare in quale riga e colonna prendere l'informazione corretta:

    =INDICE(rotativo!$C$4:$I$23;riga della tabella;colonna della tabella)

    A sua volta per conoscere la "riga della tabella" utilizzerò un'altra funzione INDICE, questa volta prendendo come riferimento la tabella nel foglio "Sviluppo posizioni" (range $A$1:$V$118) e anche qui dovrò indicare la riga e la colonna corretta per ogni lavoratore:

    INDICE('sviluppo posizioni'!$A$1:$V$118;riga della tabella;colonna della tabella)

    per la "riga tabella", prendo come riferimento la data nella cella A3 (del foglio "sviluppo turni") e la confronto con la colonna A ($A$1:$A$118) del foglio "sviluppo posizioni"). Se la data nel range $A$1:$A$118 è minore o uguale a quella della cella A3 allora mi faccio restituire il numero di riga (moltiplicando per la funzione RIF.RIGA($A$1:$A$118)). Di tutti questi numeri di righe prendo quella più alta:

    MAX(('sviluppo posizioni'!$A$1:$A$118<='sviluppo turni'!$A3)*RIF.RIGA($A$1:$A$118))

    per quanto riguarda invece la "colonna della tabella" confronterò il nome che si trova nella cella C2 (occhio ai riferimenti relativi) del foglio "sviluppo turni" con le intestazioni di colonna ($A$2:$V$2) della tabella nel foglio "sviluppo posizioni"

    CONFRONTA('sviluppo turni'!C$2;'sviluppo posizioni'!$A$2:$V$2;0)

    quindi,(ricordando che la formula è stata inserita nella cella C3 del foglio "sviluppo turni"), per "Aldo" alla data "07/03/2016", la seconda funzione INDICE mi restituirà:

    riga della tabella = 3
    colonna della tabella = 3


    e cioè:

    INDICE('sviluppo posizioni'!$A$1:$V$118;MAX(('sviluppo posizioni'!$A$1:$A$118<='sviluppo turni'!$A3)*RIF.RIGA($A$1:$A$118));CONFRONTA('sviluppo turni'!C$2;'sviluppo posizioni'!$A$2:$V$2;0))

    diventerebbe:

    INDICE('sviluppo posizioni'!$A$1:$V$118;3;3)

    che mi restituisce 1 . Questa sarà la "riga della tabella" per la prima funzione INDICE:

    =INDICE(rotativo!$C$4:$I$23;1;RESTO(RIF.RIGA(A1)-1;7)+1)&""

    Per trovare la "colonna della tabella" utilizzo la funzione RESTO in base al numero di riga (dovresti vederti come funziona consultando la guida per capire il perchè ho usato questa funzione)... in pratica, copiando la cella verso il basso, la funzione RESTO mi restituisce di volta in volta una posizione successiva (1,2,3,..7) fino ad arrivare a 7 (che corrisponde alla domenica) e dopo inizierà nuovamente il conteggio da 1 (lunedì) fino a 7 (domenica).
    Il risultato di questa funzione (per Aldo) mi darà 1 , che nella formula complessiva risulterebbe:

    =INDICE(rotativo!$C$4:$I$23;1;1)&""

    Quindi, nel range "rotativo!$C$4:$I$23" alla riga 1 e colonna 1 corrisponde la turnazione 1A.
    Copiando in basso e destra la formula prenderà come riferimento i lavoratori e le date successive aggiornando i risultati.

    P.S.

    Quel &"" finale, serve solo per restituirmi una cella vuota (al posto di uno zero), quando nella tabella del foglio "rotativo" non c'è alcun valore (celle: C8, C15, C18).

    So che forse ti ho incasinato ancora di più con questa spiegazione ma meglio di così non saprei come spiegarla.....

    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

  6. I seguenti utenti hanno dato un "Like"


  7. #5
    L'avatar di kroma
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Lecce
    Messaggi
    23
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    0
    Che dire, sei stato molto chiaro, pur dovendo ammettere che ho fatto molta fatica perché non conosco così bene alcune funzioni e ne ignoravo le potenzialità, ho comunque capito quasi, in tutti gli step, il tuo ragionamento. Vedrò di consultare alcune guide online per approfondire la funzione RESTO e la funzione INDICE che usata insieme ad altre è veramente potente.


    Grazie ancora

Discussioni Simili

  1. Matrice turni di lavoro
    Di concex17 nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 26/02/17, 11:17
  2. Idicazioni sullo sviluppo del progetto
    Di dpg70 nel forum Domande su Excel VBA e MACRO
    Risposte: 17
    Ultimo Messaggio: 28/01/17, 01:10
  3. [Risolto] Evidenziare periodo settimanale reperibilita'
    Di sebgi nel forum Domande su Excel in generale
    Risposte: 23
    Ultimo Messaggio: 24/11/16, 10:25
  4. Risposte: 6
    Ultimo Messaggio: 03/11/16, 06:20
  5. Matrice per sviluppo turni di lavoro mensili
    Di G.Bove nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 20/06/16, 09:30

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •