Excel e gli applicativi Microsoft Office Aiuto per formula calcolo orario

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

    pierluigidilegami
    Partecipante

      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
      Moderatore
        14 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

        pierluigidilegami
        Partecipante

          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
          Moderatore
            14 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
            Moderatore
              14 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
                7 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
                Moderatore
                  14 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
                  Moderatore
                    14 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)

                  Login Registrati
                  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:



                  albatros54
                  albatros54 - 453 risposte

                  vecchio frac - 412 risposte

                  Marius44
                  Marius44 - 257 risposte

                  patel
                  patel - 257 risposte

                  Luca73
                  Luca73 - 185 risposte