Incrementare la produttività, una semplice gestione dei task

Dopo aver provato diverse applicazioni e metodologie per la gestione dei task (dal Metodo del Pomodoro al GTD di David Allen fino a Project), ho optato per realizzarne una mia. Il motivo? Le applicazioni, ovviamente realizzate per soddisfare una più ampia gamma di esigenze, avevano, per i miei scopi di freelancer, un numero eccessivo di funzionalità. Mi accorgevo che risultava tedioso aggiornarle periodicamente e via via ne abbandonavo l’utilizzo.

Ho quindi redatto una lista delle mie necessità: 

  • Un numero limitato di task per giorno
  • Il mantenimento dello storico delle operazioni espletate
  • Un avvertimento in caso di superamento del tempo limite, inteso come ore lavorative
  • Lo sviluppo secondo metodologia MVP (Minimum Viable Product)
  • Un report che mostrasse sia l’analisi mensile che il giorno maggiormente produttivo

Come per il rapportino, ho scelto Excel per svilupparne e testarne un prototipo, contando, in un prossimo futuro, di convertirlo in applicazione .Net.

Ora iniziamo!

Struttura del documento

Dovranno essere create le cartelle che seguono:

  • un foglio contenente i parametri necessari alla configurazione del sistema (CONFIG)
  • dodici fogli, uno per mese, per la definizione dei task (GEN...DIC)
  • un foglio per la visualizzazione della reportistica (REPORT)

Cartella di configurazione (CONFIG)

Creare un foglio, ridenominarlo CONFIG e definirlo come da immagine sottostante. Al momento, l’unico parametro necessario, è l’anno di riferimento.

E’ importante che l’anno sia impostato nella cella B2, eventuali cambiamenti dovranno riflettersi anche nelle formule e nelle macro.

Cartelle dei task mensili

Creare una cartella e ridenominarla GEN, successivamente si effettuerà una copia della stessa, assegnando, di volta in volta, il nome di un mese diverso, da FEB a DIC.

Iniziamo ad impostare il giorno 1 come da immagine:

Per ogni giorno vi sarà la possibilità di definire al massimo venti task, un numero inferiore potrebbe non risultare sufficiente, mentre un numero superiore, oltre a rendere difficoltosa la visualizzazione, potrebbe originare aspettative superiori e compromettere la produttività.

Si uniscano le celle, relative alla colonna A, per le righe dalla 2 alla 21. Si ripeta quindi l’operazione per le colonne B, I, J e K. E’ possibile colorare le celle in dipendenza dal proprio gusto, la mia scelta è ricaduta su valori tenui, per facilitare la lettura.

Vediamo ora lo scopo di ogni singola colonna:

Colonna A : numero del giorno

Colonna B: nome del giorno

Colonna C : eventuale nominativo del committente del task

Colonna D : categoria, può assumere valori arbitrari (nel mio caso P=programmato, I=imprevisto)

Colonna E : stato, N=nuovo, P=posposto, E=eseguito

Colonna F: tempo stimato, in minuti

Colonna G : descrizione breve del task

Colonna H : note aggiuntive o utili al lavoro del giorno

Colonna I : percentuale di nuovi task

Colonna J : percentuale di task posposti

Colonna K : percentuale di task eseguiti

Visualizzazione degli ultimi giorni del mese in corso

Inserire nella colonna A i numeri dei giorni del mese, fermandosi al 28 (A542), per gli ultimi tre giorni che, come è noto, possono non essere presenti in tutti i mesi, inseriremo le seguenti formule:

Cella A562

=SE(GIORNO(DATA(CONFIG!$B$2;MESE(DATA.VALORE(STRINGA.ESTRAI(CELLA("nomefile";A562);TROVA("]";CELLA("nomefile";A562))+1;255)&" 1"))+1;0))>=29;29;"")

Cella A582

=SE(GIORNO(DATA(CONFIG!$B$2;MESE(DATA.VALORE(STRINGA.ESTRAI(CELLA("nomefile";A582);TROVA("]";CELLA("nomefile";A582))+1;255)&" 1"))+1;0))>=30;30;"")

Cella A602

=SE(GIORNO(DATA(CONFIG!$B$2;MESE(DATA.VALORE(STRINGA.ESTRAI(CELLA("nomefile";A602);TROVA("]";CELLA("nomefile";A602))+1;255)&" 1"))+1;0))>=31;31;"")

Nel dettaglio:

CELLA("nomefile";A602)

recupera il nome completo del foglio in uso

STRINGA.ESTRAI(CELLA("nomefile";A602);TROVA("]";CELLA("nomefile";A602))+1;255)

recupera il nome del foglio

MESE(DATA.VALORE(STRINGA.ESTRAI(CELLA("nomefile";A602);TROVA("]";CELLA("nomefile";A602))+1;255)&" 1")) 

rappresenta il numero del mese

GIORNO(DATA(CONFIG!$B$2;MESE(DATA.VALORE(STRINGA.ESTRAI(CELLA("nomefile";A602);TROVA("]";CELLA("nomefile";A602))+1;255)&" 1"))+1;0)) 

per trovare il numero di giorni del mese in corso

Determinazione del giorno della settimana dal nome del foglio

Inserire, nella cella B2, la formula sottostante che permetterà di ricavare il nome del giorno dal suo numero (cella A2) e dal nome del foglio

=SE(A2="";"";SCEGLI(GIORNO.SETTIMANA(DATA(CONFIG!$B$2;MESE(DATA.VALORE(STRINGA.ESTRAI(CELLA("nomefile";A1);TROVA("]";CELLA("nomefile";A1))+1;255)&" 1"));A2));"DOM";"LUN";"MAR";"MER";"GIO";"VEN";"SAB"))

Calcolo della percentuale delle celle nuove (nuovi task)

Si utilizzi la funzione CONTA.SE,  inserendo la formula sottostante nella cella I2

=CONTA.SE($E2:$E21;"N")/SE(CONTA.VALORI($E2:$E21)=0;1;CONTA.VALORI($E2:$E21))

Calcolo della percentuale delle celle posposte (task posposti)

Analogamente a quanto sopra, si inserisca la formula sottostante nella cella J2

=CONTA.SE($E2:$E21;"P")/SE(CONTA.VALORI($E2:$E21)=0;1;CONTA.VALORI($E2:$E21))

Calcolo della percentuale delle celle effettuate (task eseguiti)

Infine, ripetere l’operazione per la cella K2

=CONTA.SE($E2:$E21;"E")/SE(CONTA.VALORI($E2:$E21)=0;1;CONTA.VALORI($E2:$E21))

Una volta completato, si ripeta la procedura per ogni possibile giorno, dal 2 al 31, è possibile farlo anche selezionando il blocco di celle e trascinando.

Funzioni

All'interno del foglio creato, inserire le funzioni seguenti

Private Sub Worksheet_Change(ByVal target As Range)

    Dim strValue As String
    
    On Error Resume Next
    
    '
    ' esegue il calcolo del lavoro eseguito
    '
    m_computeItems target
    '
    ' verifica in base ai tempi inseriti, se la procedura è corretta
    '
    m_validateTime target
    
End Sub

per visualizzare in colore diverso la riga, in base allo stato

Sub m_computeItems(target As Range)

    If target.Column <> 5 Or target.Cells.Count > 1 Then Exit Sub
    
    strValue = UCase(Left(ActiveSheet.Cells(target.Row, 5).Value, 1))
    
    Select Case strValue
    
        Case "N"
            ActiveSheet.Cells(target.Row, 7).Interior.ColorIndex = 0
            
        Case "E"
            ActiveSheet.Cells(target.Row, 7).Interior.Color = RGB(183, 222, 232)
            
        Case "P"
            ActiveSheet.Cells(target.Row, 7).Interior.Color = RGB(253, 233, 217)
            
          Case Else
            ActiveSheet.Cells(target.Row, 7).Interior.ColorIndex = 0
            
    End Select
    
End Sub

per colorare la cella del giorno in rosso, in caso di superamento del tempo massimo fissato, al momento otto ore

Sub m_validateTime(target As Range)

    Dim intMaxTime As Integer
    Dim intDay As Integer
    Dim intStartRow As Integer
    Dim intEndRow As Integer
    Dim report As Worksheet
    Dim strRange As String
    Dim dblSum As Double
    Const intDAYS As Integer = 20
    
    If target.Column <> 6 Or target.Cells.Count > 1 Then Exit Sub
    
    Set report = Excel.ActiveSheet
    
    intMaxTime = 8 * 60
    
    '
    ' individua il giorno in base alla riga selezionata
    '
    intDay = target.Row \ intDAYS
    '
    ' individua la riga di partenza
    '
    intStartRow = intDay * intDAYS + 2
    intEndRow = intStartRow + intDAYS - 1
    '
    ' somma le celle dell'intervallo
    '
    strRange = "F" & intStartRow & ":F" & intEndRow
    dblSum = Excel.WorksheetFunction.Sum(report.Range(strRange))
    
    Debug.Print dblSum
    If dblSum > intMaxTime Then
        ActiveSheet.Cells(intStartRow, 1).Interior.Color = RGB(255, 0, 0)
    Else
        ActiveSheet.Cells(intStartRow, 1).Interior.Color = RGB(218, 238, 243)
    End If
    
End Sub

Ora copiare, come indicato in precedenza, il foglio creato, assegnando, di volta in volta, il nome di un mese differente, da FEB a DIC.

Cartella di visualizzazione delle statistiche (REPORT)

Adesso creiamo la cartella REPORT, nella quale potremo raccogliere e visualizzare le statistiche legate alla nostra produttività. Ad esempio il numero di task eseguiti o posposti per mese, oppure il giorno in cui mediamente risultiamo maggiormente produttivi.

Tale pagina avrà la struttura sotto riportata:

Calcolo del totale dei task per mese

Inserire nella cella B5 e quindi copiare nelle celle sottostanti, cambiando il nome del mese

=CONTA.VALORI(GEN!$E$2:GEN!$E$621)

Calcolo dei task eseguiti nel mese

Inserire nella cella C5 e quindi copiare nelle celle sottostanti, cambiando il nome del mese

=CONTA.SE(GEN!$E$2:GEN!$E$621;"E")

Mentre per la percentuale dei task eseguiti, inserire nella cella D5 e copiare nelle sottostanti

=SE(B5=0;0;C5/B5)

Calcolo dei task posposti nel mese

Inserire nella cella E5 e quindi copiare nelle celle sottostanti, cambiando il nome del mese

=CONTA.SE(GEN!$E$2:GEN!$E$621;"P")

Inserire nella cella F5 e quindi copiare nelle celle sottostanti

=SE(B5=0;0;E5/B5)

Calcolo dei task nuovi nel mese

Inserire nella cella G5 e quindi copiare nelle celle sottostanti

=B5-(C5+E5)

Inserire nella cella H5 e quindi copiare nelle celle sottostanti

=SE(B5=0;0;G5/B5)

Calcolo dei task eseguiti nel giorno/mese

Per determinare il giorno della settimana nel quale si è maggiormente produttivi, inseriremo questa formula

=SOMMA.SE(GEN!$B$2:GEN!$B$621;"="&$K$4;GEN!$K$2:GEN!$K$621)

nella cella L4 avendo cura di copiarla nelle celle L4:W10 cambiando il nome del mese

In tal modo otterremo un numero che ci fornirà una stima di quanti task avremo eseguito nel giorno della settimana considerato. Per essere efficace, la stima dovrebbe tenere conto anche dei task posposti e di quelli totali, ve lo lascio come esercizio!

 Nella colonna del totale (X) andranno inserite le sommatorie per ogni singolo giorno, ad esempio, per il lunedì, andremo ad inserire la formula:

=SOMMA(L4:W4)

Visualizzazione del giorno maggiormente produttivo

Useremo la formattazione condizionale per evidenziare, in colore diverso, quale sia il giorno maggiormente produttivo. I passaggi sono sufficientemente esplicativi.

Ed anche questa parte si è conclusa, spero abbiate gradito. Come di consueto, se preferite disporre del file originale, potete scaricarlo agendo sul tasto che precede la sezione dei commenti. Il prossimo post sarà relativo alla realizzazione di un foglio Excel per la gestione delle finanze personali in stile Kakebo.

Add comment