La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Buongiorno, chiedo se è possibile fare un calcolo ogni fine mese riferendosi ad una cella con un valore variabile nel tempo, Il risultato ottenuto ogni fine mese deve essere fissato e non più ricalcolato al variare della data. Nell'esempio allegato vorrei che il calcolo nella cella B1 fosse eseguito il 31/01 e rimanesse invariato al variare della data, così come il 28/02 nella cella B2, come il 31/03 nella B3 ecc. ecc.
Grazie
Scusate, per essere precisi mi sono dimenticato di dire che il valore della cella C1 varia spesso, anche una volta ogni 2/3 giorni. grazie
ciao
se ho capito
=SE.ERRORE(SE(OGGI()>=FINE.MESE(DATA(ANNO(OGGI());MESE(A1&1);1);0);12/$C1;"");"")
ma il valore varia solo durante il mese vero?
non dopo
@gianfranco55 il valore in C1 cambia un paio di volte a settimana per tutto l'anno.
ciao
non ci capiamo
cambierà in base alla data
se cambia in febbraio influisce anche sui dati di gennaio?
sarà c1 per gennaio
c2 per febbraio
@gianfranco55 Ciao GianFranco, il dato in C1 cambia sempre un paio di volte a settimana per tutta la vita del file, io vorrei che ad ogni ultimo giorno di ogni mese della vita del file (anche diversi anni), venga fatto un calcolo e il suo risultato venga messo dentro la cella B1, B2 ecc ecc e rimanga immutabile al trascorrere del tempo. Riferito alla tua domanda, se cambia in febbraio non deve interferire su tutti i mesi precedenti dove questo calcolo è già stato eseguito. Dimmi se mi sono fatto capire. Grazie della cortesia
Aggiungo, riferito al mio file di esempio, con C1 = a 150 gennaio e febbraio mi daranno 0,08. Ma se per esempio il 31/03 C1 è uguale a 200, B3 diventerà 0,06, mentre B1 e B2 devono rimanere 0,08 come calcolato nei loro rispettivi ultimi giorni. Durante il passare dei giorni di marzo il risultato di B3 varierà al variare di C1, ma al 31/01 si fissa e rimarrà quello per sempre
Ciao
Innanzi tutto la colonna A deve essere impostata con mese ed anno (visto che dici che il file potrebbe durare tanti anni), quindi Formato celle -> Personalizzato mmmm-aa;@
Poi inserisci questo codice in un Modulo standard e associalo ad una forma o ad un pulsante (non ActiveX)
Option Explicit Sub prova() Dim i As Long, ur As Long, num As Double, dRif As Double Dim mese As Integer, anno As Integer ur = Cells(Rows.Count, 1).End(xlUp).Row num = Cells(1, 3).Value dRif = Int(Now()) mese = Month(dRif) anno = Year(dRif) For i = 1 To ur If Month(Cells(i, 1)) = mese And Year(Cells(i, 1)) = anno Then Cells(i, 2) = 12 / num End If Next i End Sub
@marius44 GRAZIE MILLE, ci proverò, se però volessi usare la colonna A per i mesi e mettere nelle colonne dopo i vari anni? (ex: colonna B=2021, colonna C=2022, colonna D=2023 ecc ecc, naturalmente spostando la vecchia colonna C in, non so facciamo colonna Z1) Questo è possibile?
Ciao
Sì, si può fare (cambia un po', però in maniera sostanziale, la ricerca dell''uguaglianza mese-anno con la data odierna impostata nel codice come dRif) ma dipende dalla tua conoscenza di VBA altrimenti sarai costretto a dipendere da altri.
Ciao,
Mario
ciao
marius
ma non si semplifica la cosa se nella colonna A
scrive direttamente
=FINE.MESE(DATA(ANNO(OGGI());RIF.RIGA(A1);1);0)
e la tira in giù
formatta mmmm
ed è a cavallo
si può semplificare
correggimi se sbaglio
Option Explicit Sub prova() Dim i As Long, ur As Long, num As Double, dRif As Double Dim mese As Integer, anno As Integer ur = Cells(Rows.Count, 1).End(xlUp).Row num = Cells(1, 3).Value For i = 1 To ur If Cells(i, 1) = Date Then Cells(i, 2) = 12 / num End If Next i End Sub
Ciao @gianfranco55
Non credo che si risolva. Oggi è il 18 di marzo 2021 (questa è la data che ti dà la funzione Date che hai impostato nella macro). Se cerchi l'uguaglianza (hai inserito questo codice: If Cells(i, 1) = Date Then) non la troverai mai in quanto la cella della colonna A porta la data di fine mese (dalla formula che hai indicato al post precedente), ovvero la troverai SOLO se Date è uguale alla fine del mese.
Oppure mi son perso qualcosa per strada .... ?
Ciao,
Mario
ciao
ti sei perso
io vorrei che ad ogni ultimo giorno di ogni mese
in pratica a fine mese il dato in c1 deve essere inserito
in colonna B dove viene fatto il calcolo 12/C1
ecco perchè ho messo tutti i fine mese
al 31/01 scriverà in gennaio
al 28/02 scriverà in febbraio ecc...