Condividi:        

Esiste un riferimento relativo al foglio precedente?

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

Esiste un riferimento relativo al foglio precedente?

Postdi wallace&gromit » 19/01/24 11:52

Vorrei creare un riferimento relativo ad una determinata cella del foglio precedente.
Sono sempre dati mensili, il riferimento attuale riporta il nome del mese precedente, per esempio in febbraio ho: "=D5+gen!E5"
in marzo: "=D5+feb!E5" e così via.
ma anche "=D5+
Esiste qualcosa tipo "=D5+(foglio attuale -1)!E5"?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Sponsor
 

Re: Esiste un riferimento relativo al foglio precedente?

Postdi Anthony47 » 19/01/24 13:53

Non esiste
Anni fa avevo pubblicato una Function ShOffset, magari la ritrovo; oppure la riscrivo, oppure nel frattempo la inventi tu o ricorri a una formula che usa "Indiretto" e poi "gioca" col nome del mese del foglio attuale per creare quello precedente.
Avatar utente
Anthony47
Moderatore
 
Post: 19217
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Esiste un riferimento relativo al foglio precedente?

Postdi wallace&gromit » 19/01/24 14:19

Infatti nel frattempo ho usato il metodo INDIRETTO(INDIRIZZO...), allunga un po' la formula ma funziona.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Esiste un riferimento relativo al foglio precedente?

Postdi Anthony47 » 19/01/24 19:46

La funzione potrebbe essere questa:
Codice: Seleziona tutto
Function ScartoSh(ByRef lAdr As Range, ByVal ShOff As Long, Optional GimmeStr As Boolean = False) As Variant
'Restituisce un RANGE pari a lAdr spostato del numero di fogli specificato
'Se terzo parametro=True, restituisce una STRINGA con nome foglio e indirizzo
'
Application.Volatile
Set ScartoSh = Sheets(Parent.Caller.Parent.Index + ShOff).Range(lAdr.Address)
If GimmeStr Then
    ScartoSh = "'" & ScartoSh.Parent.Name & "'!" & ScartoSh.Address(0, 0, , False)
End If
End Function


Esempio di uso:
Codice: Seleziona tutto
=CERCA.VERT(C1;ScartoSh(K1:M8;-1);3;0)

Il valore in C1 viene cercato nella tabella presente sul foglio a sinistra di 1 posizione (-1) rispetto al foglio che contiene la formula.
Si noti che la funzione TRASCURA un eventuale riferimento a un NomeFoglio, rimanendo il foglio calcolato agganciato al foglio che contiene la formula. Cioe' se scrivessi =CERCA.VERT(C1;ScartoSh(Foglio5!K1:M8;-1);3;0) il range calcolato farebbe sempre riferimento al foglio che contiene la formula, e "Foglio5" verrebbe ignorato
Infine va tenuto presente che per la formula i "predecessori" sono quelli indicati in chiaro nella formula, non quelli "ricalcolati" come da offset; quindi la formula non si ricalcolerebbe quando i predecessori ricalcolati cambiano. Per evitare questo effetto ho dichiarato la Function "volatile", che quindi si ricalcola a ogni cambiamento del foglio. Potrebbe quindi esserci un sovraccarico di cpu se le formule fossero tante e complesse; ma anche la funzione INDIRETTO e' volatile, quindi nel confronto dovrebbe cambiare poco.

Se lo "scarto" portasse a un foglio inesistente la funzione restituirebbe l'errore #VALORE!

Per pura curiosita' ho introdotto la possibilita' di ottenere in uscita dalla funzione non un Range ma il suo indirizzo sotto forma di stringa, inserendo il terzo parametro come Vero o anche solo 1. Potrebbe avere un utilizzo se usato in una formula piu' complessa, che ad esempio aggiunga anche il nome del file di lavoro, all'interno della funzione INDIRETTO

Spero di avervi confuso ben bene...
Avatar utente
Anthony47
Moderatore
 
Post: 19217
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Esiste un riferimento relativo al foglio precedente?

Postdi wallace&gromit » 22/01/24 08:27

Come per tutte le funzioni di excel io ne farò un uso molto limitato :D
Mi basta Il riferimento alla cella e -1 per il foglio:
Codice: Seleziona tutto
=C3+ScartoSh(C17;-1;0)

In C17 di ogni foglio mi sommerà C3 dello stesso foglio con C17 del foglio precedente

Sostituisce ottimamente la formula:
Codice: Seleziona tutto
=+C3+INDIRETTO(INDIRIZZO(RIF.RIGA();RIF.COLONNA();;;$L$15))

dove in ogni mese in L15 dovevo mettere la sigla del mese precedente.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21


Torna a Applicazioni Office Windows


Topic correlati a "Esiste un riferimento relativo al foglio precedente?":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti