Calcolo ore ORDSTR automatico



  • Calcolo ore ORD/STR automatico
    di ERMES.MAZ data: 25/12/2014 22:58:58

    Ciao a tutti

    scrivo per chiedervi un aiuto...
    Nel file allegato vi è una tabella con le settimane del mese e settimana x settimana il resoconto delle ore ordinarie e straordinarie effettuate.
    I valori settimana 1... 2 ecc variano da mese a mese e vorrei riuscire a calcolare in modo automatico le ore nelle colonne evidenziate in giallo.
    Ora è stato fatto manualmente... È possibile mediante formule automatizzare il tutto?

    Grazie e ancora BUONE FESTE



  • di ERMES.MAZ data: 25/12/2014 23:08:38

    I codici non presenti in tabella come RFI, RO, RC, hanno valore 0

    Il codice F se presente 5 volte con RC e RO deve avere valore 0

    Ma...

    Se presente 1 o più volte con un solo varore tra RC e RO o RFI ha valore sul conteggio dello straordinario.

    Esempio

    F F F RFI 1 1 2 deve dare 16 ore ordinarie e 8 straordinarie
    F F F RO 1 1 2 oppure F F F RC 1 1 2 è uguale all'esempio sopra

    Se fosse

    F F F RFI RO 1 2 darà 16 orsinarie 0 straordinarie



  • di ERMES.MAZ data: 26/12/2014 17:18:47

    Nessuno??




  • di Mister_x (utente non iscritto) data: 28/12/2014 13:35:22

    ciao Ermes

    eravamo a festeggiare
    comunque in base al tuo file con dati esposti di verifica sono uscite queste due funzioni
    una e Ordinario() la seconda Straordinario()
    PS attenzione che non devono essere colorate le celle diversamente da come le vedi nel tuo file, giustamente quelle da escudere durante la settimana tipo la prima e la quinta
    la colonna degli Ordinari e' verde ma per un mio riscontro visivo per non confondere con Straordinario
    utilizzo in K6 per Ordinario
    K6=Ordinario(D6:J6) range della settimana
    L6 per straordinario range della settimana;valore di Ordinario
    L6=straordinario(D6:J6;K6)

    Attenzione che mancano ai calcoli le altre opzione della tabella, in quanto non ho trovato nessun riscontro come calcolare
    TUA TABELLA
    TABELLA PER CALCOLO ORE ORDINARIE e STRAORDINARIE



    CODICI C C+ C* C** 1 1+ 1* 1** 2 2+ 2* 2** 3 3+ 3* 3**
    ORE 8 12 4 9 8 12 0 8 8 12 0 8 8 12 9 10

    si intende il tutto da verificare

    ciao e Buon ANNO



     
    TABELLA PER CALCOLO ORE                                                                     ORDINARIE e STRAORDINARIE																
    																
    																
    																
    CODICI	C	C+	C*	C**	1	1+	1*	1**	2	2+	2*	2**	3	3+	3*	3**
    ORE	8	12	4	9	8	12	0	8	8	12	0	8	8	12	9	10
     Funzioni inserite
    PS attenzione al valore (Diverso) in quanto il programma taglia , va inserito
    Option Explicit
    Function Ordinario(RangCelle As Range) As Long
    Dim TotOre, Ver11, Ver1, Vercol As Long
    Dim Cella, Colore As Variant
    Ver11 = 0
    Ver1 = 0
      For Each Cella In RangCelle
    Colore = Cella.Interior.ColorIndex
    If Colore (Diverso) xlNone Then
      If Cella (Diverso) "F" And Cella (Diverso) "RC" And Cella (Diverso) "RO" And Cella (Diverso) "RFI" Then
        Vercol = Vercol + 1
      End If
    End If
        Select Case Cella
           Case "F"
             Ver1 = Ver1 + 1
           Case "RFI"
             Ver1 = Ver1 + 1
           Case "RO"
             Ver1 = Ver1 + 1
           Case "RC"
             Ver1 = Ver1 + 1
           Case 1
             TotOre = TotOre + 8
             If Ver1 = 4 Then Ver11 = Ver11 + 1
          Case "C"
             TotOre = TotOre + 8
         Case "C+"
             TotOre = TotOre + 12
         Case 2
          If Ver1 (Diverso) 4 Or Ver11 (Diverso) 2 Then TotOre = TotOre + 8
         Case 3
             TotOre = TotOre + 8
          End Select
      Next
      If TotOre >= 40 Then TotOre = 40
    Ordinario = TotOre - (Vercol * 8)
    End Function
    Function Straordinario(RangCelle As Range, ValOrd As Long) As Long
    Dim TotOre, Vercol As Long
    Dim Cella, Colore As Variant
    For Each Cella In RangCelle
      Colore = Cella.Interior.ColorIndex
    If Colore (Diverso) xlNone Then
      If Cella (Diverso) "RC" And Cella (Diverso) "RO" And Cella (Diverso) "RFI" Then
        Vercol = Vercol + 1
      End If
    End If
        Select Case Cella
          Case 1
            TotOre = TotOre + 8
         Case "C"
             TotOre = TotOre + 8
         Case "C+"
             TotOre = TotOre + 12
         Case 2
            TotOre = TotOre + 8
         Case 3
             TotOre = TotOre + 8
        End Select
      Next
    Straordinario = TotOre - (ValOrd + (Vercol * 8))
    End Function
    
    






  • di Ermes.Maz (utente non iscritto) data: 28/12/2014 14:39:06

    Mister X......

    Sei UN GRANDE!!!!!

    Con tutto il cuore ti dico GRAZIE e auguro anche a te e famiglia un FANTASTICO 2015