Condividi:        

Eliminare errore giorno di Pasqua

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

Eliminare errore giorno di Pasqua

Postdi Cedamido » 30/03/20 10:16

Nella cella A2 digito l'anno nella cella B2 =datadiPasqua(A2) quando cancello l'anno cella A2 nella cella B2 esce l'errore #VALORE
come fare? Grazie
excel 2003
Cedamido
Utente Senior
 
Post: 314
Iscritto il: 17/08/08 23:26

Sponsor
 

Re: Eliminare errore giorno di Pasqua

Postdi Ricky0185 » 30/03/20 15:39

Cella B2==ARROTONDA.DIFETTO(DATA($A$2;5;GIORNO(MINUTO($A$2/38)/2+56));7)-34
A2 formato Generale e B2 Data
Ciao
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Eliminare errore giorno di Pasqua

Postdi Cedamido » 30/03/20 16:19

Grazie per la risposta,questa formula non funziona, se cancello l'anno cella A2 nella cella B2 porta una data strana del 1900. Ho messo la spunta su 1904 ma non funziona esce #num.
excel 2003
Cedamido
Utente Senior
 
Post: 314
Iscritto il: 17/08/08 23:26

Re: Eliminare errore giorno di Pasqua

Postdi Anthony47 » 30/03/20 17:38

Se cancelli A2 allora otterrai la data della Pasqua del 1900, 15-apr-1900
Idem se in A2 scrivi 1900; infatti le date in Excel hanno come base l'anno 1900 (o 1904, ma la formula funziona correttamente solo col sistema 1900)

Se invece vuoi usare la "funzione datadiPasqua" allora devi allegarci il suo codice vba.

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

Re: Eliminare errore giorno di Pasqua

Postdi Cedamido » 30/03/20 19:19

Scusa, da dove lo prendo questo codice vba. nel file c'è questo
Codice: Seleziona tutto
Function IndiceDove(Dato, Vettore) As Integer
  Dim i As Integer
  For i = UBound(Vettore) To 0 Step -1
    If Dato >= Vettore(i) Then Exit For
  Next
  IndiceDove = i
End Function



Codice: Seleziona tutto
Function DataDiPasqua(Anno As Integer) As Date
  Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
  Dim Anni, M, Q, ind As Integer
  Anni = Array(1583, 1700, 1800, 1900, 2100, 2200, 2300, 2400)
  M = Array(22, 23, 23, 24, 24, 25, 26, 25)
  Q = Array(2, 3, 4, 5, 6, 0, 1, 1)
  ind = IndiceDove(Anno, Anni)
  a = Anno Mod 19
  b = Anno Mod 4
  c = Anno Mod 7
  d = (19 * a + M(ind)) Mod 30
  e = (2 * b + 4 * c + 6 * d + Q(ind)) Mod 7

  Dim didimar As Integer, MesePasq As Integer, GiorPasq As Integer
  didimar = 22 + d + e
  If didimar > 31 Then
    MesePasq = 4
    GiorPasq = didimar - 31
  Else
    MesePasq = 3
    GiorPasq = didimar
  End If
  DataDiPasqua = DateSerial(Anno, MesePasq, GiorPasq)
End Function
excel 2003
Cedamido
Utente Senior
 
Post: 314
Iscritto il: 17/08/08 23:26

Re: Eliminare errore giorno di Pasqua

Postdi Ricky0185 » 30/03/20 21:28

Metti questo codice/funzione pubblica in un modulo del workbook

Codice: Seleziona tutto
Public Function Pasqua(ByVal anno As Integer) As Date
   Dim a%, b%, c%, p%, q%, r%
   a = anno% Mod 19: b = anno% \ 100: c = anno% Mod 100
   p = (19 * a + b - (b \ 4) - ((b - ((b + 8) \ 25) + 1) \ 3) + 15) Mod 30
   q = (32 + 2 * ((b Mod 4) + (c \ 4)) - p - (c Mod 4)) Mod 7
   r = (p + q - 7 * ((a + 11 * p + 22 * q) \ 451) + 114)
   Pasqua = DateSerial(anno%, r \ 31, (r Mod 31) + 1)
End Function

poi in qualunque cella a piacere scrivi
=Pasqua(anno che vuoi) cioè per il 2020 =Pasqua(2020)
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Eliminare errore giorno di Pasqua

Postdi Anthony47 » 30/03/20 22:47

(se usate i tag per incapsulare il codice allora non rischiate di vedere le faccine)

Ognuna delle due funzioni "funziona" regolarmente se gli si passa un Anno ragionevole
La funzione di Ricky accetta anche gli anni in formato "abbreviati" (da 50 a 99 si intendono 19xx; da 0 a 49 si intendono 20xx)

Se nella DataDiPasqua non vuoi avere come risultato un errore se l'anno e' sballato (minore di 1900) allora modifica come segue:
Codice: Seleziona tutto
Function DataDiPasqua(Anno As Integer) As Variant       'MMM Riga Modificata
If Anno < 1900 Then DataDiPasqua = "": Exit Function    '+++ Riga AGGIUNTA
'seguono le altre istruzioni:
  Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Eliminare errore giorno di Pasqua

Postdi Ricky0185 » 31/03/20 07:43

(se usate i tag per incapsulare il codice allora non rischiate di vedere le faccine)

Denkiù
Mattiniero neh?
Ciao
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Eliminare errore giorno di Pasqua

Postdi wallace&gromit » 31/03/20 11:12

OpenOffice è più avanti, esiste la funzione specifica integrata per il calcolo della pasqua.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: Eliminare errore giorno di Pasqua

Postdi Ricky0185 » 31/03/20 15:02

Grande OT
Ti rispondo perchè con l'aria che tira non mi sconquinfera stare a 17 post.
Stiamo parlando di office 2003 e fra le varie proposte peraltro ci sono anche 2 funzioni, vabbè devi riempire la cella per attivarle, circa 2 secondi, più la quota parte per inserire la funzione nel VBE, facciamo che la userai fino al (formula considerando l'aspettativa di vita uomo=81 anni) =(81 - Propria età) per cui la quota parte è =10 secondi (tempo per inserire la funzione)/(81-Propria età) che per me da 2,2 decimi. Quindi per conoscere il giorno in cui cade la Pasqua fino al 2066 io impiego circa 2"2d2c.
Ora dimmi quanto impieghi tu col tuo OO. Fra l'altro l'ho disinstallato perchè con le macro è una tregenda.
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Eliminare errore giorno di Pasqua

Postdi Anthony47 » 31/03/20 15:26

Immagino che nel rapporto prezzo/prestazioni OpenOffice sia davanti a Office, se licenza per uso personale e non business; questo perche' OO se non sbaglio e' gratuito :D

Poi se Office ha ancora un buon mercato devo dedurre che qualche vantaggio ce l'ha....

COMUNQUE, visto che la data della Pasqua vi intriga, vi elenco altre formule idonee, testate con date comprese tra 1900 e 2200:

Codice: Seleziona tutto
=ARROTONDA.DIFETTO(GIORNO(MINUTO(A1/38)/2+56)&" / 5 / "&A1;7)-34
By Norbert Hetterich

Codice: Seleziona tutto
=VALUTA(("4/"&A1)/7+RESTO(19*RESTO(A1;19)-7;30)*14%;)*7-6
By Thomas Jansen

Codice: Seleziona tutto
=ARROTONDA.DIFETTO(DATA(A1;3;RESTO(18,37*RESTO(A1;19)-6;29));7)+29
By Roger Friederich

In aggiunta a quella presentata da Ricky:
Codice: Seleziona tutto
=ARROTONDA.DIFETTO(DATA(A1;5;GIORNO(MINUTO(A1/38)/2+56));7)-34


La Function Pasqua restituisce la data sbagliata per l'anno 2079

La Function DataDiPasqua sbaglia sugli anni 1954, 1981,2049, 2076, 2079

Tutte calcolano la Pasqua per le chiese dell'occidente (non per gli Ortodossi, quindi)

Se siete troppo interessati, potete consultare il sito della Astronomical Society of South Australia, che descrive la teoria dei calcoli (non di queste formule Excel), e presenta anche una routine Basic, facilmente convertibile in Function Excel e in grado di calcolare la data per gli anni dal 1583 (introduzione del calendario Gregoriano) al 4099:
https://www.assa.org.au/edm

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Eliminare errore giorno di Pasqua

Postdi wallace&gromit » 31/03/20 17:18

Se questo messaggio di Anthony fosse arrivato domani (1° aprile) non avrei nemmeno provato ad usare le formule per paura di essere sbeffeggiato in qualche maniera e invece oggi è il 31 marzo e le ho provate e... :eeh: :eeh: :eeh: :eeh: funzionano!!!

OpenOffice ho dovuto usarlo mio malgrado per un calcolo delle ore che a suo tempo avevo fatto per il lavoro di mia moglie, che ora ha nuovi PC senza microsoft e ho dovuto adattarlo (non so se era necessaria una giustificazione ma tanto per mettere le cose in chiaro, io rimango fedele a Bill).

PS la seconda formula per il 2079 dà 23 aprile, le altre 16, che immagino sia corretto, invece no, ha ragione la seconda: 23!
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: Eliminare errore giorno di Pasqua

Postdi Ricky0185 » 31/03/20 17:43

Chissà se Cedamido ha capito quale formula/funzione usare
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Eliminare errore giorno di Pasqua

Postdi Anthony47 » 31/03/20 23:42

Sempre continuando, la ricerca di formule idonee, questa e' basata sulla costante PFM-Paschal Full Moon di cui avrete letto sul sito della Astronomical Society of South Australia (vedi link nel precedente messaggio):
Codice: Seleziona tutto
=TESTO.UNISCI("";A1;CODICE.CARATT(STRINGA.ESTRAI("06"&"6117111110032080114105109111032065112114105108101";1+(RIF.RIGA(INDIRETTO("1:"&(LUNGHEZZA(A1)^2+1)))-1)*3;3*(LUNGHEZZA(A1)=4))))

L'anno va messo in A1, e funziona anche per l'anno 2079 che manda in crisi altre formule; non accetta pero' le dati brevi tipo "89" per 1989, ma solo date a 4 cifre

Tale formula pero' sfrutta la funzione Testo.Unisci che e' disponibile solo sulle ultime versioni di Excel (credo da XL2016).

Per versioni precenti bisogna ricorrere a una Funzione personalizzata, che corrisponde a questo codice:
Codice: Seleziona tutto
Function PasquAll(ByVal myY As Integer) As Variant
Dim PMF As String
PMF = "066117111110032080114105109111032065112114105108101"
For I = 1 To Len("" & myY) * 4 + 1
    myStr = myStr & Chr(Mid(PMF, (I - 1) * 3 / Day(DateSerial(myY, I / 4, 1)) + Log(CLng(Mid(PMF, 11, 2))) / Log(10), Len("" & myY) - 1))
Next I
If Len(myStr) > 9 Then PasquAll = myStr Else PasquAll = CVErr(2015)
End Function

Va inserito in un Modulo Standard del vba e poi sul foglio si potra' usare una formula tipo:
Codice: Seleziona tutto
=PasquAll(A1)
(In A1 l'anno sempre a 4 cifre)

Funziona solo per date a 4 cifre post 1583 (per le date precedenti, appartenenti al calendario Giuliano, non ho trovato le tabelle con cui confrontare il risultato e comunque la funzione non compensa i giorni saltati nel passaggio al calendario Gregoriano)

Buona sperimentazione...
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Eliminare errore giorno di Pasqua

Postdi Ricky0185 » 01/04/20 15:21

E per il calendario Anthonyano47 non dirmi che comparirà Buona Battaglia delle Arance
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38


Torna a Applicazioni Office Windows


Topic correlati a "Eliminare errore giorno di Pasqua":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti

cron