Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Restituzione formula DDE

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

Restituzione formula DDE

Postdi fara15 » 19/12/11 20:47

Buona serata a tutti,

mi rivolgo a Voi perché non riesco a risolvere il seguente problema:

Nella colonna da B1 a B5 ho dei valori ottenuti da una fonte esterna DDE.
Se clicco con il mouse su tali celle mi compare sulla barra della formula “ =DDE……..”

Da B9 a B11 è presente la formula cerca.verticale che mi restituisce il numero corrispondente ai valori rappresentati da A9 a A11.

Purtroppo non sono riuscito ad ottenere , nelle celle adiacenti C9 a C11, anche la restituzione della formula (Es: =DDE……).

-----A---B-------C---D---E---F
01 - 1--23
02 - 2--456
03 - 3--342
04 - 4--123
05 - 5--56
06
07
08
09 - 3--342 ---=DDE....
10 - 1--23-----=DDE....
11 - 5--56-----=DDE....
12
13

Grazie per quello che fate per tutti noi.
fara15
Utente Junior
 
Post: 23
Iscritto il: 19/12/11 20:01

Sponsor
 

Re: Restituzione formula DDE

Postdi Anthony47 » 20/12/11 00:03

Ciao fara15, benvenuto nel forum.
Quello che dici excelnon lo fa di suo, ma poi ottenerlo con una "user defined function" (udf); ad esempio in un Modulo standard del vba inserisci questo codice
Codice: Seleziona tutto
Function vlookf(ByVal valook, ByRef rangin As Range, ByVal ColOut As Integer) As String
vlookf = rangin.Range("A1").Offset(Application.Match(valook, rangin, 0) - 1, ColOut - 1).Formula
End Function


Poi in C9 (nel tuo esempio) scriverai una formula tipo
Codice: Seleziona tutto
=vlookf(A9;A$1:A$5;B$1:B$5)

che ti restituira' la formula contenuta nella cella B3. La formula puo' essere copiata poi verso il basso.

La sintassi standard di questa funzione e':
Codice: Seleziona tutto
VLOOKF(Termine;IntervalloDiRicerca;IntervalloDiOutput)
Essa cerca il valore Termine nell' IntervalloDiRicerca (che deve essere di una sola colonna) e, trovandolo, restituisce la formula dell' IntervalloDiOutput che ha la stessa posizione rispetto a Termine nell' IntervalloDiRicerca. Pertanto IntervalloDiRicerca e IntervalloDiOutput, nel tuo caso, devono coincidere come riga di inizio e riga di termine. Teoricamente e' sufficiente anche solo la prima cella di IntervalloDiOutput (es =vlookf(A9;A$1:A$5;B$1)), ma e' meglio inserire tutto l' intervallo per avere il ricalcolo automatico.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Restituzione formula DDE

Postdi fara15 » 20/12/11 15:46

Grazie Antony per il Tuo interessamento.

Ho fatto esattamente come hai descritto nelle esatte celle descritte nell'esempio ma al variare del valore nelle celle DDE le celle interessate restituiscono ----#NOME?--

La macro l'ho inserita in un modulo della cartella modulo1.
Ho provato ad inserirla anche nel Modulo della Foglio1, ma il risultato è lo stesso cambia solo la restituzione da --#NOME?-- a ---#VALORE?---.

Scusami Antony ma la macro occorre lanciarla con un comando tipo pulsante oppure è una funzione autoavviante.
Infine con quale versione di excel è da utilizzare con la 97/2003 oppure con la 2007?

Ti ringrazio ancora della tua generosa disponibiltà.
fara15
Utente Junior
 
Post: 23
Iscritto il: 19/12/11 20:01

Re: Restituzione formula DDE

Postdi ricky53 » 20/12/11 16:13

Ciao,
l'ultimo parametro da passare alla UDF in base a quanto scritto nella UDF
ColOut As Integer
deve essere un numero e non un intervallo.

La UDF di Anthony è esatta solo che nell'esempio che lui ha fornito penso ti abbia ... diciamo portato fuori strada scrivendo in
Codice: Seleziona tutto
=vlookf(A9;A$1:A$5;B$1:B$5)


invece di
Codice: Seleziona tutto
=vlookf(A9;A$1:A$5; 2)
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Restituzione formula DDE

Postdi fara15 » 20/12/11 17:19

Grazie ANTONY e RICKY,

funziona tutto perfettamente.

Buon Natale.
fara15
Utente Junior
 
Post: 23
Iscritto il: 19/12/11 20:01

Re: Restituzione formula DDE

Postdi Anthony47 » 20/12/11 19:47

Ragazzi, in realta' ho sbagliato a postare il codice; quello che si adatta alla descrizione che ho fatto nel post precedente e' questo:
Codice: Seleziona tutto
Function vlookf(ByVal valook, ByRef RangIn As Range, ByRef RangOut As Range) As String
vlookf = RangOut.Range("A1").Offset(Application.Match(valook, RangIn, 0) - 1, 0).Formula
End Function

Quello che invece avevo pubblicato e' una versione anch'essa funzionante ma che si richiamava (come ti ha suggerito Ricky) con =vlookf(Termine;IntervalloDiRicerca;ScartoDiColonna)

Il difetto di quella versione di codice e' che se cambia il valore nelle colonna delle formule il risultato della vlookf non cambia automaticamente, in quanto quell' intervallo non e' tra i "precedenti"; problema invece risolto dalla formula ora pubblicata.
Scusate...
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Restituzione formula DDE":


Chi c’è in linea

Visitano il forum: albval e 27 ospiti