Condividi:        

calcolo epatta

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

calcolo epatta

Postdi Rosario77 » 02/02/08 22:11

Un saluto a Voi tutti
Poichè sono INALFABETA, questa volta mi piacerebbe ricevere un aiutino da un prof. di matematica che girovaga per il forum. Il problema è una DIVISIONE!!, non viene come dicono in diversi forum.
Ecco l'operazione maledetta:
calcolo dell'epatta
(1990 + 1) : 19 = 1991 : 19 = 104 col resto di 15. Il mio risultato è 104,79.
1990 : 19 = 104 col resto di 14. il mio risultato è 104,74.
Scerzi a parte, i risultati che mi da excel sono quelli che ho scritto, come mai?, sbaglio davvero in qualcosa?
Rosario
Rosario77
Utente Junior
 
Post: 23
Iscritto il: 16/12/07 10:56

Sponsor
 

Re: calcolo epatta

Postdi Anthony47 » 04/02/08 14:58

Per amor di “verita’ convenzionale” prendo le parti di excel, condividendo l’ esito delle operazioni richiestegli:
1990/19= 104,7368421052.. che a due decimali viene visualizzato come 104,74
1901/19= 104,7894736842.. che a due decimali viene visualizzato come 104,79

Volendo tu calcolare l’ epatta, e spero che non lo stia facendo per calcolare automaticamente la data della Pasqua nel foglio orario che hai sviluppato, dovresti usare la funzione RESTO e non il segno di divisione, es RESTO(1990;19) ti restituira’ 14; se invece volessi la parte intera della divisione, o usi INT(Num1/Num2) oppure la funzione QUOZIENTE, es QUOZIENTE(1990;19) ti restituira’ 104 (Quoziente e’ disponibile solo dopo aver installato il componente aggiuntivo “Strumenti di analisi”).

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolo epatta

Postdi Rosario77 » 05/02/08 10:14

Ti ringrazio per la risposta ma, come tu stesso dici spesso, ho utlizzato in modo appropriato l'help ed ho risolto il problema con, appunto, la funzione resto().
Grazie ancora e comunque.
Rosario77

P.S.
In effetti vorrei calcolare la Pasqua ma, in base a quanto scrivi, comincio aad avere qualche dubbio sulla riuscita!!
Rosario77
Utente Junior
 
Post: 23
Iscritto il: 16/12/07 10:56

Re: calcolo epatta

Postdi gudmund » 06/02/08 11:02

Se ti interessa ho scritto questa funzione per il calcolo della pasqua: il parametro da passare è solo l'anno in formato numerico; restituisce una data in formato seriale, quindi bisogna impostare il formato cella a "data". Funziona dall'anno 1583 al 2499.
Forse non è molto elegante, ma funziona
ciao
Codice: Seleziona tutto
Function Pasqua(Anno As Integer) As Date
    Dim a, b, c, d, e, M, N As Integer
    Dim Giorno, Mese As Integer
    Select Case Anno
    Case 1583 To 1699
        M = 22
        N = 2
    Case 1700 To 1799
        M = 23
        N = 3
    Case 1800 To 1899
        M = 23
        N = 4
    Case 1900 To 2099
        M = 24
        N = 5
    Case 2100 To 2199
        M = 24
        N = 6
    Case 2200 To 2299
        M = 25
        N = 0
    Case 2300 To 2399
        M = 26
        N = 1
    Case 2400 To 2499
        M = 25
        N = 1
    Case Else
        Pasqua = False
        Exit Function
    End Select
   
    a = Anno Mod 19
    b = Anno Mod 4
    c = Anno Mod 7
   
    d = (19 * a + M) Mod 30
    e = (2 * b + 4 * c + 6 * d + N) Mod 7
   
    If d + e < 10 Then
        Giorno = d + e + 22
        Mese = 3
    Else
        Giorno = d + e - 9
        Mese = 4
    End If
    Pasqua = Format(Str(Giorno) & "/" & Str(Mese) & "/" & Str(Anno))
End Function
gudmund
Utente Junior
 
Post: 50
Iscritto il: 21/06/07 14:09

Re: calcolo epatta

Postdi Rosario77 » 11/02/08 13:40

Ringrazio, in ritardo e calorosamente gudmund, ultimamente ho avuto pochissimo tempo ma, questa sera proverò la tua soluzione e poi farò sapere.
Invece, gli ultimi problemi che ho avuto, sempre in relazione al calcolo dello straodinario, sono stati i seguenti:
I dati inseriti giorno 1 del mese di gennaio, nel foglio di calcolo, che chiamermo "GENNAIO", confluiscono in un secondo foglio, "RIEPILOGO" che contiene il riepilogo di tutto il mese di gennaio e di tutto il personale. Le celle del foglio RIEPILOGO verificano il nome del dipendente che si sta trattando nel foglio GENNAIO e, nel rigo corrispondente a quel dipendente, inserisce le ore calcolate. Quando nel foglio GENNAIO inserisco dati nelle celle relative al giorno 2 dello stesso mese, le ore inserite non si sommano a quelle già presenti nel foglio RIEPILOGO ma si sostituiscono alle stesse.Questo è il mio problema. Qualcuno del forum ha già dovuto risolverlo per se stesso? Se sì, potrbbe dirmi come fare?
Grazie e saluti
Rosario77

Il secondo problemino, riguadante il menù a discesa, alla prossima puntata.
Rosario77
Utente Junior
 
Post: 23
Iscritto il: 16/12/07 10:56

Re: calcolo epatta

Postdi Anthony47 » 11/02/08 15:09

Parlo del foglio orario.
Dovresti spiegare la tecnica che hai usato per portare su RIEPILOGO i dati del foglio Gennaio. E nel foglio Gennaio ci sono piu' nominativi, che quindi vanno distinti mentre si riportano su Riepilogo?

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolo epatta

Postdi Rosario77 » 11/02/08 21:07

Le celle da M38 a Q38, formato personalizzato [h].mm, del foglio GENNAIO, contengono, rispettivamente:
=SOMMA(M6:M36), str diurno;
=SOMMA(N6:N36), str notturno;
=SOMMA(O6:O36), str festivo;
=SOMMA(P6:P36), str festivo notturno;
=SOMMA(Q6:Q36), ore da recuperare.
Il nome del dipendente è inserito, manualmente, nelle celle unificate J3:L4, in formato testo. Nelle stesse celle vorrei utilizzare un menù a tendina, ho trovato diversi esempi ma, ancora, non so come fare.
La data si trova da B6 a B36 più quella suggerita che contiene il primo giorno del mese successivo.
Il foglio RIEPILOGO, nelle cella da B2 aB31, contiene i nomi dei dipendenti.
Le celle da F2 a J2, formato personalizzato [h].mm, del foglio RIEPILOGO, contengono, rispettivamente:
=SE(Gennaio!J3=B2;Gennaio!M38;0) ), str diurno;
=SE(Gennaio!J3=B2;Gennaio!N38;0) ), str notturno;
=SE(Gennaio!J3=B2;Gennaio!O38;0) ), str festivo;
=SE(Gennaio!J3=B2;Gennaio!P38;0) , str festivo notturno;
=SE(Gennaio!J3=B2;Gennaio!Q38;0) , ore da recuperare.
Spero di essere stato esaustivo.
Ciao.

Rosario77
Rosario77
Utente Junior
 
Post: 23
Iscritto il: 16/12/07 10:56

Re: calcolo epatta

Postdi Anthony47 » 11/02/08 22:39

Hai un foglio Gennaio, con 1 nominativo e vorresti costruire un riepilogo per 30 nominativi?
Intendi dire che finito il calcolo per il nominativo A vorresti riepilogare in foglio2; poi azzerare Gennaio, inserire i dati del nominativo B e riepilogarli; e cosi' via?
Se e' cosi' e' evidente che le formule citate non sono idonee, perche' esse danno la foto del foglio Gennaio per il nominativo corrente e basta.
Se e' cosi' la cosa piu' semplice e' che sul foglio del mese fai una riga di riepilogo con il nominativo e accanto i suoi dati; quando il calcolo e' finito fai copia di queste celle e "incolli valore" sul foglio Riepilogo. Se vuoi automatizzare, puoi registrare una macro mentre copi i dati da Gennaio e incolli nella prima posizione di Riepilogo; poi modifichi la macro in modo da selezionare non la prima posizione ma la prima posizione libera nell' elenco.
Se il riepilogo lo fai con il nominativo in colonna B, l' istruzione con cui selezioni la prima libera e'
Codice: Seleziona tutto
Range("B100").End(xlup).offset(1,0).select

(seleziona la prima cella vuota che trova sopra B100, partendo da B1; max fino a riga 99)

Se non e' come l'ho interpretata, allora e' bene che provi a descrivere ancora.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

CALCOLO PASQUA

Postdi Cedamido » 05/09/08 21:55

Scusami,ho fatto un giro, ho trovato la Tua funzione, ma non riesco nel funzionamento:l'ho incollata nel foglio VBA.
Ricordati che sono sempre una schiappa, se me lo vuoi spiegare.
saluti e salute perfetta
excel 2003
Cedamido
Utente Senior
 
Post: 314
Iscritto il: 17/08/08 23:26

Re: calcolo epatta

Postdi Anthony47 » 05/09/08 22:29

Ciao, vediamo se gudmund (l' autore del post a cui fai riferimento, vero?) e' disponibile per chiarimenti, altrimenti ci provero' io (ma chiunque altro abbia qualcosa da dire in merito e' benvenuto).
Nel frattempo ti chiedo: ma hai provato con esito errato, o vuoi sapere come utilizzare la funzione, o ti interessa solo a uso didattico?
In linea di massima, intanto, suggerirei di sostituire nella funzione questa istruzione Pasqua = Format(Str(Giorno) & "/" & Str(Mese) & "/" & Str(Anno)) (che e' troppo dipendente dal settaggio del pc) con questa:
Codice: Seleziona tutto
Pasqua = DateSerial(Anno, Mese, Giorno)


Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolo epatta

Postdi gudmund » 17/09/08 10:55

Scusate se non ho risposto prima, ma sono stato in ferie.
La funzione va inserita in un modulo (Inserisci ->Inserisci modulo) nell'editor di VBA (che si apre con Alt+F11).
dopo di che si utilizza esattamente come una qualsiasi funzione di Excel. Il solo problema è che dovrai fare questa operazione per ogni file in cui vuoi utilizzare la funzione. Per averla sempre disponibile devi creare un file .XLA che la contenga. Se ti interessa, siamo qui.
Esempio:
se in A1 scrivi 2008 (l'anno attuale) e in A2 scrivi =pasqua(A1) il risultato in A2 sarà 39530 che è il valore seriale del 23 marzo 2008, cioè la pasqua 2008. Ovviamente se A2 è formattato come data, il risultato sarà una data
Grazie ad Antony per la dritta sul giusto formato della data: errore da autodidatta.
Ciao
gudmund
Utente Junior
 
Post: 50
Iscritto il: 21/06/07 14:09

Re: calcolo epatta

Postdi gudmund » 17/09/08 11:03

Ah, dimenticavo: naturalmente la penultima riga della funzione va sostituita con quella opportunamente suggerita da Anthony
ciao
gudmund
Utente Junior
 
Post: 50
Iscritto il: 21/06/07 14:09

Re: calcolo epatta

Postdi gudmund » 17/09/08 11:28

Ancora una cosa; la funzione utilizza il metodo di Gauss e NON tiene conto delle uniche 2 eccezioni previste.
http://it.wikipedia.org/wiki/Calcolo_de ... o_di_Gauss
Mi sono sempre ripromesso di inserirle nel calcolo, ma non ho mai trovato il tempo (e la voglia) di farlo
gudmund
Utente Junior
 
Post: 50
Iscritto il: 21/06/07 14:09

Re: calcolo epatta

Postdi gudmund » 18/09/08 10:29

Sono ancora io per fare qualche precisazione
Premetto che la prima volta che ho scritto questa funzione, era per "Clipper vers. Summer 87" (standing ovation, please). Qualche anno fa, quando ho cominciato a studiare VBA, fa l'ho adattata senza badare molto alle differenze sulla gestione delle date. Ora che mi ci sono rimesso, mi sono reso conto che è inutile considerare le date prima del 1900, sia perché poco utili, sia, soprattutto, perché non gestite da excel, quindi le ho escluse dal calcolo (ma basta togliere gli apici per riconsiderarle).
Ho poi finalmente inserito le due eccezioni previste (per i curiosi gli anni interessati sono: 1954, 1981, 2036, 2049, 2106, 2133, 2201, 2296, 2448). Ecco quindi la funzione aggiornata:

Codice: Seleziona tutto
Function Pasqua(Anno As Integer) As Date
    Dim a, b, c, d, e, M, n As Integer
    Dim Giorno, Mese As Integer
    Select Case Anno

'    Case 1583 To 1699
'        M = 22
'        n = 2
'    Case 1700 To 1799
'        M = 23
'        n = 3
'    Case 1800 To 1899
'        M = 23
'        n = 4

    Case 1900 To 2099
        M = 24
        n = 5
    Case 2100 To 2199
        M = 24
        n = 6
    Case 2200 To 2299
        M = 25
        n = 0
    Case 2300 To 2399
        M = 26
        n = 1
    Case 2400 To 2499
        M = 25
        n = 1
    Case Else
        Pasqua = False
        Exit Function
    End Select
   
    a = Anno Mod 19
    b = Anno Mod 4
    c = Anno Mod 7
   
    d = (19 * a + M) Mod 30
    e = (2 * b + 4 * c + 6 * d + n) Mod 7
   
    If d + e < 10 Then
        Giorno = d + e + 22
        Mese = 3
    Else
        Giorno = d + e - 9
        Mese = 4
    End If
   
    If Mese = 4 And Giorno = 26 Then
        Giorno = 19
    ElseIf Mese = 4 And Giorno = 25 And d = 28 And a > 10 Then
        Giorno = 18
    End If
   
    Pasqua = DateSerial(Anno, Mese, Giorno)
End Function



Scusate se ho monopolizzato il post. Spero che possa essere utile a qualcuno
ciao
gudmund
Utente Junior
 
Post: 50
Iscritto il: 21/06/07 14:09

Re: calcolo epatta

Postdi Flash30005 » 18/09/08 12:48

Complimenti Gudmund,
la macro funziona perfettamente.
Non ho al momento questa esigenza ma ho voluto provarla per curiosità, nel futuro non si sa mai...
Per comodità ho inserito all'apertura del foglio questa formattazione automatica della cella B1

Codice: Seleziona tutto
Private Sub Workbook_Open()
    Range("B1").Select
    Selection.NumberFormat = "dd/mm/yyyy"
End Sub
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: calcolo epatta

Postdi Flash30005 » 18/09/08 19:12

Flash30005 ha scritto:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Range("B1").Select
Selection.NumberFormat = "dd/mm/yyyy"
End Sub

Certo se si potesse dare il codice di formattazione come quello del sistema diventerebbe "universale"
con qualcosa tipo:
Codice: Seleziona tutto
Selection.NumberFormat = "System.Date"

Ma così non funziona :(
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "calcolo epatta":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti