Excel e gli applicativi Microsoft Office Aiuto per formula calcolo orario

LoginRegistrati
Stai vedendo 8 articoli - dal 1 a 8 (di 8 totali)
  • Autore
    Articoli
  • #7149 Risposta

    Vi chiedo gentilmente un aiutino per questo problema:
    ho creato una formula che mi permettesse di avere un risultato in termini di tempo presenza (ad esempio una classe di allievi), sommando le differenze. Ad esempio: somma (B1-A1)+(D1-C1) ecc ecc Copio e incollo dalla barra =SOMMA(CR4-CQ4)+(CT4-CS4)+(CV4-CU4)+(CX4-CW4)+(CZ4-CY4)+(DB4-DA4)+(DD4-DC4)+(DF4-DE4)+(DH4-DG4)+(DJ4-DI4)+(DL4-DK4)+(DN4-DM4) ancora esempio: Tizio entra alle 15:25 ed esce alle 18:35 , per quel giorno avrò una presenza oraria di 3ore e 10 minuti. Fin qui tutto bene, riesco ad avere il tempo presenza di ogni allievo.
    Il problema nasce nel momento in cui devo prolungare la formula per tutti i giorni ad esempio per un anno (5gg la settimana). Creata a mano per ogni singola cella, ma non posso farla per un anno. Non esiste un modo per prolungarla??
    Vi dico subito che il trascinamento non funziona!!

    Grazie mille

    #7151 Risposta

    vecchio frac
    Senior Moderator
    • Sfida #1
      171 pts

      Sono un po' di coccio, abbi pazienza, prova ad allegare un file di esempio così capiamo meglio lo scenario.

      Come mai il trascinamento "non funziona"? cosa significa? che il foglio è protetto ed è inibita la selezione?

      #7152 Risposta

      Ti ringrazio per la risposta. Il mio calcolo va dal 4/10 al 9/10 e non riesco a prolungare la formula nei giorni precedenti.  Ti allego il foglio

      Allegati:
      You must be logged in to view attached files.
      #7154 Risposta

      vecchio frac
      Senior Moderator
      • Sfida #1
        171 pts

        Mi aspettavo di trovare anche qualche valore di esempio compilato.

        La formula si trova nella cella Totale ore (DO4 e seguenti). Ci ho messo un po' a trovarla 🙂

        La formula scritta così non è corretta nel senso che vedo:

        =SOMMA(CR4-CQ4)+(CT4-CS4)+

        Formalmente funziona ma solo perchè poi ci sono operazioni di somma e non perchè sia =SOMMA a intervenire. Cioè: la formula usa SOMMA solo per il valore CR4-CQ4. Quindi puoi toglierla e vedrai che funziona lo stesso 🙂

        Se il risultato atteso (che ancora non hai illustrato: "non riesco a prolungare la formula nei giorni precedenti" non dice molto) è estendere la formula alle colonne precedenti, conservando l'alternanza "orario di uscita - orario di entrata" (e comunque fino a quando? fino alla cella iniziale E4? noto che ci sono anche giornate ripetute), purtroppo credo che le devi proprio scrivere a mano.

        Io non lo so ma magari qualcuno più competente in formulacce ha una soluzione matriciale in mano...

         

        #7157 Risposta

        vecchio frac
        Senior Moderator
        • Sfida #1
          171 pts

          Comunque se vuoi provare un po' di codice, incolla il seguente in un modulo nuovo:

          Option Explicit
          
          Function totale_ore(r As Range)
          Dim i As Long
          Dim d As Date
          
              For i = Cells(r.Row, r.Cells(1).Column).Column To r.Cells(r.Row, r.Cells.Count).Column Step 2
                  d = d + (Cells(r.Row, i + 1) - Cells(r.Row, i))
              Next
              
              totale_ore = d
          End Function

          Si utilizza come una normale funzione del foglio di lavoro, nella cella del totale ore (cella DO4)  scrivi:

          =totale_ore(E4:DN4)

          e la function ti calcola automagicamente il totale delle ore lavorate per l'intera riga.

          Poi la puoi trascinare in basso.

           

          #7163 Risposta
          albatros54
          albatros54
          Moderatore
          • Sfida #2
            42 pts

            io modificherei la riga

            totale_ore = d

            in

            totale_ore = Format(d, "hh:mm:ss")

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #7164 Risposta

            vecchio frac
            Senior Moderator
            • Sfida #1
              171 pts

              albatros54 wrote:io modificherei la riga

              Io già qualifico la variabile d di tipo Date e quindi in uscita dalla funzione assume quel valore (visto che viene ritornato un Variant). Con la tua modifica si restituisce una stringa. Non vorrei che il risultato venisse falsato a causa del cambio di tipo di dato (anche se nel caso particolare non si vede la differenza perchè le celle son formattate a tipo data/ora)

              #7165 Risposta

              vecchio frac
              Senior Moderator
              • Sfida #1
                171 pts

                Però albatros ha avuto una buona idea, perchè si potrebbe evitare di imporre un formato a livello di foglio, e forzarlo da codice, semplicemente con l'istruzione

                totale_ore = FormatDateTime(d, vbShortTime)

                😉 (pollice su... devo scriverlo per esteso perchè manca l'iconcina)

              LoginRegistrati
              Stai vedendo 8 articoli - dal 1 a 8 (di 8 totali)
              Rispondi a: Aiuto per formula calcolo orario
              Gli allegati sono permessi solo ad utenti REGISTRATI
              Le tue informazioni:



              vecchio frac - 2744 risposte

              albatros54
              albatros54 - 716 risposte

              patel
              patel - 627 risposte

              Marius44
              Marius44 - 544 risposte

              Luca73
              Luca73 - 514 risposte