› Excel e gli applicativi Microsoft Office › Correzione formula ore residue in base al database
-
AutoreArticoli
-
Cari amici del Forum,
vi scrivo per chiedere supporto su un file Excel che ho costruito seguendo i preziosi suggerimenti ricevuti in passato.Nella cartella sono presenti due fogli:
"database": contiene le ore lavorate giornalmente dal collega Paolo Rossi;
"PAOLO ROSSI": riporta l'inserimento delle ore per ciascun cliente.Nel foglio “PAOLO ROSSI”, alla cella L9 (evidenziata in rosso) viene indicato un residuo di 3 ore ma verificando il foglio “database” risulta che quel giorno sono state lavorate 6 ore e 45 minuti. Considerando che la giornata lavorativa intera è di 8 ore (e 5 ore il venerdì), il valore corretto del residuo dovrebbe essere 1 ora e 15 minuti.
Vi chiedo cortesemente un suggerimento su come riformulare la formula (che contiene di default una giornata piena di 8 ore ed il venerdì di 5 ore) nella colonna L, affinché vada a leggere direttamente dal foglio "database" le ore effettivamente lavorate, calcolando correttamente le ore residue in base alla giornata effettivamente lavorata.
Specifico che la versione utilizzata è Microsoft 365.
Grazie come sempre a chi vorrà dedicarmi il suo tempo.
Un caro saluto
Allegati:
You must be logged in to view attached files.ciao,
perchè duplicare i datt? basterebbe aggiungere una colonna nel foglio Database ("ore residue") per avere tutto in un solo foglio. Poi se vuoi un foglio per persona puoi creare una tabella pivot usando l'opzione "mostra pagine filtro rapporto"
Ciao LukeReds, grazie innanzitutto per il tuo suggerimento di evitare la duplicazione di informazioni.
Il motivo per cui ho creato anche il foglio "PAOLO ROSSI" (la cartella naturalmente comprende un foglio per ciascun dipendente coinvolto, al momento 18) è per avere un’interfaccia più semplice per l’inserimento dei dati per cliente, mentre il foglio "database" raccoglie solo il riepilogo giornaliero.
Mi interessa molto capire come automatizzare il calcolo delle ore residue per ciascun foglio dipendente in base alle ore di effettivo lavoro presente in database (frutto di una power query, aggiornata mensilmente in base alle rilevazioni ore ricevute dall'ufficio personale).
Se riesco a capire questo punto, posso sicuramente valutare di semplificare la struttura come suggerisci, magari integrando tutto in una pivot.
Grazie ancora per il tuo tempo e la tua disponibilità.
Un caro saluto
ciao
=SOMMA.PIÙ.SE(Database[Ore];Database[Data];J4;Database[Nominativo];"PAOLO ROSSI")
che versione hai di excel
procedimento per avere un foglio per dipendente
- aggiungere una colonna nel foglio Database ("ore residue", ancora da compilare nel file allegato)
- creare una pivot con i dati del foglio Database
- mettere il nominativo nel quadrante filtro della pivot, Data sulle righe e Ore negli importi
- scheda "analisi tabella pivot" - opzioni - "mostra pagine filtro rapporto":viene automaticamente creata una pagina per persona/dipendente (sempre ammesso di aver capito la tua necessità). allego file per maggior chiarezza
Ho aggiunto 2 persone per comprendere meglio il risultato ottenuto
Allegati:
You must be logged in to view attached files.Ciao Gianfranco55,
innanzitutto grazie per il tuo intervento.
Ho Microsoft 365 Apps for enterprise.
Un caro saluto
ciao
prova a mettere in una cella
=RAGGRUPPAPER(Database[[#Tutti];[Data]];Database[[#Tutti];[Ore]];SOMMA;3;0;;Database[Nominativo]="PAOLO ROSSI")
ho usato il foglio DATABASE
PAOLO ROSSI lo metti su una cella e farai riferimento a quello
io ho messo (cancellare tutte le celle sotto) in J4
=RAGGRUPPAPER(Database[[#Tutti];[Data]];Database[[#Tutti];[Ore]];SOMMA;;0;;Database[Nominativo]="PAOLO ROSSI")
in L4
=LET(T;SE(GIORNO.SETTIMANA(SCEGLI.COL(J4#;1);1)=6;ORARIO(5;0;0)-SCEGLI.COL(J4#;2);ORARIO(8;0;0)-SCEGLI.COL(J4#;2));SE(SCEGLI.COL(J4#;1)="";"";SE(T<0;TESTO(ASS(T);"- "&"[hh]:mm");T)))
in M4
=SE(STRINGA.ESTRAI(L4#;1;1)="-";"Monte ore superato";"OK!")
Ciao a tutti,
ringrazio sia LukeReds per il suo esempio che ho già messo in pratica ed è sicuramente una valida alternativa.
Le formule proposte da Gianfranco55 sono valide e rispondono in pieno alle mie esigenze.
Considero la discussione risolta e chiusa.
Un caro saluto
franci
con una fai tutto
=LET(A;RAGGRUPPAPER(Database[[#Tutti];[Data]];Database[[#Tutti];[Ore]];SOMMA;;0;;Database[Nominativo]="PAOLO ROSSI");B;LET(T;SE(GIORNO.SETTIMANA(SCEGLI.COL(A;1);1)=6;ORARIO(5;0;0)-SCEGLI.COL(A;2);ORARIO(8;0;0)-SCEGLI.COL(A;2));SE(SCEGLI.COL(A;1)="";"";SE(T<0;TESTO(ASS(T);"- "&"[hh]:mm");T)));STACK.ORIZ(A;B;SE(STRINGA.ESTRAI(B;1;1)="-";"Monte ore superato";"OK!")))
grazie per la cortesia dimostrata nelle risposte, cosa tutt'altro che scontata
Ciao Gianfranco55,
la formula che mi hai indicato funziona perfettamente.
Non posso che ringraziarti nuovamente per il tempo e la pazienza dimostrata.
Un caro saluto
-
AutoreArticoli