Condividi:        

TRASFORMARE FORMULA EXCEL IN VBA MACRO

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

TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi SASCHA71 » 25/05/09 15:43

Salve,
scusate ma sono nuova e poco sperta di VBA. Ho necessità di modificare una formula in una macro. Intanto per farvi capire con la macro si crea una formula che viene inserita in una cella di un foglio "SPESE". La formula originale era la seguente

Cells(indirizzo_libera, 13).FormulaR1C1 = "=IF(RC[-4]=""Km"",RC[-2]*0.27,RC[-1])"

e nella cella veniva creata la formula excel

=SE(I3="Km";K3*0,27;L3)

Io adesso devo far venire fuori nella cella invece la seguente formula

=SE(I3="Km";K3*0,27;SE(I3="Cena";SE(L3<25;L3;25);SE(I3="Pranzo";SE(L3<15;L3;15);L3)))

Ho provato a modificarla

Cells(indirizzo_libera, 13).FormulaR1C1 = "=IF(RC[-4]=""Km"",RC[-2]*0,27,IF(RC[-4]=""Cena"",IF(RC[-1]<25,RC[-1];25),IF(RC[-4]=""Pranzo"",IF(RC[-1]<15,RC[-1],15),RC[-1])))"

ma niente, sono una imbranata più totale....
AIUTATEMI VI PREGO
SASCHA71
Utente Junior
 
Post: 11
Iscritto il: 25/05/09 14:38

Sponsor
 

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi ricky53 » 25/05/09 15:55

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
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi SASCHA71 » 25/05/09 16:07

GRAZIEEEEEEEEEEEEEEEEEE .....

Mitico nn so proprio come ringraziarti.
SASCHA71
Utente Junior
 
Post: 11
Iscritto il: 25/05/09 14:38

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi ricky53 » 25/05/09 16:10

Ciao,
avevi commesso due errori:

1. il decimale (hai utilizzato la virgola invece del "punto") in IF(RC[-4]=""Km"",RC[-2]*0,27
2. il separatore (hai utilizzato il ";" invece della ",") in IF(RC[-1]<25,RC[-1];25)

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi ricky53 » 25/05/09 16:13

Con questa:

Immagine

anche se fa caldo.

Ciao da Ricky53
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi SASCHA71 » 25/05/09 16:29

:lol:
ciao e grazie di nuovo

Alla prossima ... :D
SASCHA71
Utente Junior
 
Post: 11
Iscritto il: 25/05/09 14:38

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi SASCHA71 » 22/10/09 09:30

Ciao,
sono di nuovo alle prese con le macro di Excel.
Non riesco a far funzionare il registratore per trasformare la formula.
La vecchi aformula era
"=IF(RC[-4]=""Km"",RC[-2]*0.27,IF(RC[-4]=""Cena"",IF(RC[-1]<25,RC[-1],25),IF(RC[-4]=""Pranzo"",IF(RC[-1]<15,RC[-1],15),RC[-1])))"
quella nuova deve essere:
=SE(I7="Km";K7*0,27;SE(I7="Cena";SE(L7<25;L7;SE(O7="Pagato anche per altri";L7;25));SE(I7="Pranzo";SE(L7<15;L7;SE(O7="Pagato anche per altri";L7;15));L7)))
Mi puoi aiutare di nuovo.
Grazie
SASCHA71
Utente Junior
 
Post: 11
Iscritto il: 25/05/09 14:38

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi Anthony47 » 22/10/09 14:16

Se procedi con "registra nuova macro" avrai la sintassi idonea per quella formula.
E' possibile che questa istruzione faccia quello che ti serve:
Codice: Seleziona tutto
ActiveCell.FormulaLocal = "=SE(I7=""Km"";K7*0,27;SE(I7=""Cena"";SE(L7<25;L7;SE(O7=""Pagato anche per altri"";L7;25));SE(I7=""Pranzo"";SE(L7<15;L7;SE(O7=""Pagato anche per altri"";L7;15));L7)))"
(Senza nessuna garanzia di aver messo gli apici corretti)
Sull' opportunita' di usare "Activecell." oppure "Selection." non mi pronuncio perche' non so quale e' l' obiettivo finale.

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

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi SASCHA71 » 22/10/09 14:45

Grazie mille.

Un abbraccio.

SMACK
Sascha
SASCHA71
Utente Junior
 
Post: 11
Iscritto il: 25/05/09 14:38

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi Flash30005 » 22/10/09 14:49

Ciao Sascha
Scusate l'intromissione ma visto Sascha si sta addentrando nel Vbe vorrei che provasse a usare questa macro:
Codice: Seleziona tutto
Sub CompilaSe()
UR = ActiveSheet.Range("I" & Rows.Count).End(xlUp).Row
For Riga = 2 To UR
If Range("I" & Riga).Value = "Km" Then Range("E" & Riga).Value = Range("K" & Riga).Value * 2.7
If Range("I" & Riga).Value = "Cena" Then
    If Range("L" & Riga).Value < 25 Then
        Range("E" & Riga).Value = Range("L" & Riga).Value
    Else
         Range("E" & Riga).Value = 25
    End If
End If
If Range("I" & Riga).Value = "Pranzo" Then
    If Range("L" & Riga).Value < 15 Then
        Range("E" & Riga).Value = Range("L" & Riga).Value
    Else
         Range("E" & Riga).Value = 15
    End If
End If
Next Riga
End Sub

Devi solo attivare la macro stando nel foglio dei dati (foglio attivo)
Ho considerato la prima riga come testata quindi i valori da te voluti vengono inseriti nella colonna E (dalla riga 2 fino all'ultima riga riscontrabile nella colonna I) senza alcun ausilio di formule.
Personalmente preferisco le formule quando in una cartella non ci sono molti dati da calcolare e la macro quando i dati sono notevoli, se con le formule hai un risultato immediato con le macro rendi il file più "leggero".

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi SASCHA71 » 22/10/09 14:59

Ti ringrazio. Mi sembra che giri bene e mi dia il risultato voluto.

Grazie

Sascha
SASCHA71
Utente Junior
 
Post: 11
Iscritto il: 25/05/09 14:38

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi gidio » 25/05/10 11:25

Ciao tutti,
sono nuovo del forum e colgo l'occasione per fare i complimenti a tutti ( forum con persone competenti e cordiali....SPETTACOLO).

Il post in questione mi interessa molto.
La soluzione di ricky53 è eccezzionale ma nel mio caso diventa un po' lunghetta come operazaione!! :(

VI spiego la situazione:

ho un file excel nel quale 26 fogli hanno la stessa formula ( cambia solo riga e colonna)
la formula va da C7 a EV313 ed è la seguente :

=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))


risultato: 45.900 celle moltiplicato per 26 fogli = 1.193.400 di celle con la seguente formula :eeh: :o :-?

Fare 45.900 volte [F2] + invio poi duplicare il codice 26 volte cambiando riferimento fogglio a manina..... :mmmh: :cry: :o

Secondo voi esite un Barbatrucco per fare un automatismo che mi generi l'elenco delle formule che si trovano nelle celle/fogli?

L'dea è quella di allegerire il file che attualmente pesa 180 Mb


Grazie a tutti
GiDiO
Avatar utente
gidio
Utente Junior
 
Post: 14
Iscritto il: 25/05/10 10:43

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi Flash30005 » 25/05/10 11:47

Ciao Gidio e benvenuto nel Forum

... e scommetto che il file è di circa 10 Mb (se non più)

Perché non pensare ad una macro che inserisce direttamente il risultato di quella formula?

Se ti va bene, invia il tuo file e vediamo cosa possiamo fare
(modifica o togli dati sensibili)

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi gidio » 25/05/10 11:58

Grazie Flash30005 per la rapida risposta

Mi risulta difficile invialrlo...
180 Mb di file ed in piu ci sono altri fogli oltre quei 26 con dentro varie migliaia di formule.
Per inoltrarlo dovrei cambiare i dati e nomi ( politica aziendale.....giustamente) e diventa un lavoro lungo.

vedo se riesco a creare un file tipo..... magari con meno fogli e meno formule ....
L'importante è capire il concetto.

Grazie mille!!
Avatar utente
gidio
Utente Junior
 
Post: 14
Iscritto il: 25/05/10 10:43

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi Flash30005 » 25/05/10 12:16

Fai una cosa
crea un file con i 26 fogli con i nomi effettivi (e anche eventuali fogli esistenti nella cartella ma che non devono subire il processo)
Metti i valori e un paio di formule nella posizione esatta e indicherai il numero di righe occuoate da queste formule
Inoltre specifica se i dati collegati a queste formule vengono cambiati nel tempo o solo aggiunti dei nuovi.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi Anthony47 » 25/05/10 23:43

Domanda: ma sei sicuro che ti servono 46000 formule tutte uguali moltiplicato 26 fogli?
Poi non ho capito il discorso degli F2 per cambiare il riferimento, sia perche' se hai gia' il file dovresti avere gia' le formule, sia perche' se le formule sono tutte uguali non mi e' chiaro quali sono i riferimenti da cambiare.

Questo in aggiunta ai suggerimenti di Flash...

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

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi gidio » 26/05/10 07:43

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à
Avatar utente
gidio
Utente Junior
 
Post: 14
Iscritto il: 25/05/10 10:43

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi Flash30005 » 26/05/10 08:20

C'è questo topic appositamente creato che spiega come fare per allegare il file.
Bisogna inviare il file ad un server host come
http://www.rapidshare.com
il server rilascerà un indirizzo per il download del file
devi copiare l'indirizzo e incollarlo nel tuo post

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi gidio » 26/05/10 09:14

Grazie mille...
http://rapidshare.com/files/391670263/D ... E.zip.html
Ecco il file con esempio ( dati,nomi,nomi file tutti inventati)
Ottimo il topic segnalato
Avatar utente
gidio
Utente Junior
 
Post: 14
Iscritto il: 25/05/10 10:43

Re: TRASFORMARE FORMULA EXCEL IN VBA MACRO

Postdi gidio » 26/05/10 09:16

Scusate
"http://rapidshare.com/files/391671544/DEMO_FILE.zip.html"

http://rapidshare.com/files/391671544/D ... E.zip.html
Avatar utente
gidio
Utente Junior
 
Post: 14
Iscritto il: 25/05/10 10:43

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "TRASFORMARE FORMULA EXCEL IN VBA MACRO":


Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti