Ciao Anthony47 e grazie per la risposta.
Lo so sembra una cosa da malato di mente.........
provo a dare una spiegazione :
La prima parte del cerca vert . ($A7&$A$1&C$4&$B$1
corrisponde ad un concatena che definisce delle variabili relative al foglio in cui si trova la cella con la formula.
Questo concatena è una chiave univoca per il cerca verticale dei dati presenti in un altro foglio.
nel foglio della formula ci sono :
- A7 un dato che cambia ad ogni riga delle 300 del stesso foglio infatti
- A1 riferimento ad una sigla che cambia per ogni foglio
- C4 è una variabile che cambia ad ogni colonna.
- B1 un variabile ad esempio "x" o "y" che è importante per la chiave di ricerca
L formula è costruita in modo che possa trascinarla sia per colonna che per riga mantenendo i riferimenti del caso ( per riga $A7 e per colonna C$4 cambia
mentre $A$1 e $B$1 rimangono fisse
Io devo popolare la cella della formula con un dato che trovo su un altro foglio tramite questa chiave di ricerca.
Ovviamente tutte queste formule fanno diventare il foglio molto pesante ( 180 mb ...ci sono anche altri fogli).
Volevo trasformare tutte le formule in VBA .
ricky53 aveva dato qesta soluzione che mi va bene se ho poche formule,
mentre nel mio casa farlo 1 ad 1 sarebbe improbabile.
ricky53 ha scritto:Ciao sascha,
prima di tutto ti invio un "benvenuta nel forum".
Prova con il registratore di macro:
1. seleziona la cella che contiene la formula (Es. "E3")
2. avvia il registratore di macro
3. premi "F2" + Invio
4. ferma il registratore di macro
5. vai a vedere cosa è stato scritto nel VBA Editor.
Comunque dovrebbe essere (ho scritto la formula nella cella "E3"):
ActiveCell.FormulaR1C1 = _
"=IF(RC[4]=""Km"",RC[6]*0.27,IF(RC[4]=""Cena"",IF(RC[7]<25,RC[7],25),IF(RC[4]=""Pranzo"",IF(RC[7]<15,RC[7],15),RC[7])))"
Ciao da Ricky53
La mia domanda era :
é possibile fare una conversione di massa che mantenga queste definizioni:
riga $A7 e per colonna C$4 cambia
mentre $A$1 e $B$1 rimangono fisse
per questa formula (in questo caso la formula si trova in C7):
=SE(VAL.ERRORE(CERCA.VERT($A7&$A$1&C$4&$B$1;OPT_Open!$U$4:$V$702;2;FALSO));"-";CERCA.VERT($A7&$A$1&C$4&$B$1;OPT_Open!$U$4:$V$702;2;FALSO))
Se la formula mi restitusce #N/D allora metto "-" altrimenti il risultato della formula
So che parlare di 46.000 formule in un foglio senbra roba da malati di mente ma attualmente è l'unico modo per automatizzare un lavoro che veniva svolto a mano.
Il file deve tenere in considerazione ogni variabile (riga A7:A313 e colonna C4:EV4)
Il tutto funziona ma appena faccio una modifica sta 10/15 minuti per il ricalcolo.
So che posso togliere il ricalcolo automatico, ma in ogni caso poi devo fare [F9]e ricalcolare quindi .....
L'unico modo è di allegerire il file e farlo lavorare via codice!!!
ho crerato un file demo di foglio con formule e dove pesca i dati con 4 fogli ( con dati e nomi inventatio)l'originale ha 32 fogli di cui 26 con le caratteristice di avere 46000 formule per foglio
Basta capire come crerare una variabile macro che mi generi tutte le formule
non so come allegare il file demo
Grazie a tutti per la disponibilità