Condividi:        

EXCEL MACRO INSERIMENTO FORMULA IN CELLA

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

EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Phil9601 » 13/09/12 14:02

Cari amici,
mi pervengono dei file excel con 7 colonne ed un numero variabile di righe, contenenti elenchi di fatture.
Elaboro tali files con una macro che va ad eliminare la prima riga, aggiunge tre colonne a destra, formatta il tutto,
aggiunge due righe alla fine, in alcune celle delle quali si va ad inserire alcuni records. In una delle nuove colonne, la H precisamente, al momento vuota tranne che nella penultima cella dove si è inserito il totale delle fatture, si andrà in seguito ad immettere, con segno negativo, le fatture che sono, alle varie scadenze, pagate.
Ho bisogno di inserire, nella macro creata, delle righe di codice che collochino la formula SOMMA nell'ultima cella della colonna H in modo che, quando andrò ad inserire, in vari tempi, le fatture pagate, appaia il residuo da pagare (la formula cioè sommerà tutte le celle precedenti,laddove quella immediatamente superiore, come ho già detto, sarà il totale delle fatture, di segno positivo, e le altre saranno gli importi delle singole fatture pagate, di segno negativo). Le macro che ho visto in precedenti discussioni del forum, e che ho provato ad applicare, in realtà restituiscono il totale della colonna, ma non con una formula attiva, per cui ulteriori inserimenti, dopo che la macro iniziale ha corso, non danno un nuovo totale come invece dovrebbe essere in un una cella dove è inserita una formula. Da ultimo: in questa colonna H le celle utilizzate dovrebbero avere il formato numero "#,##0.00".
Grazie per l'attenzione
Phil9601
Utente Junior
 
Post: 12
Iscritto il: 22/03/12 08:39

Sponsor
 

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Anthony47 » 13/09/12 15:06

Prova a registrare una macro mentre inserisci nella cella che ti interessa la formula che ti interessa, otterrai il codice che ti serve. Immagino che non avrai difficolta' a modificarlo per adattarlo al tuo caso, ma "alla bisogna" pubblica il codice ottenuto e spiega quali adattamenti vorresti farci.

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

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Phil9601 » 14/09/12 08:09

Grazie per la pronta risposta.
Sì, avevo provato ad inserire la funzione Somma con la registrazione macro, ma quanto ottenuto non funziona con i file aventi un numero di righe superiore od inferiore al foglio usato per la registrazione. La mia conoscenza di VBA non mi pemette di modificare la formula in modo soddisfacente.
Questa è la riga ottenuta con la registrazione:

ActiveCell.FormulaR1C1 = "=SUM(R[-26]C:R[-1]C)"

Inizialmente il foglio conteneva 25 righe, nella casella H26 ho riportato il totale delle fatture, nella casella H27 è stata inserita la formula della somma (nella registrazione ho usato i riferimenti relativi ma il risultato è lo stesso che non li avessi inseriti)
Usando un foglio con numero di righe superiore, la formula considera naturalmente solo le 26 precedenti e non estende la selezione.
Bisognerebbe che venisse calcolato il numero di righe da sommare e che questo dato venisse inserito automaticamente nella formula SUM ma purtroppo non sono stato capace.
Phil9601
Utente Junior
 
Post: 12
Iscritto il: 22/03/12 08:39

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi wallace&gromit » 14/09/12 09:19

Ciao Phil, puoi usare qualcosa di simile a quanto già fatto in un altro tuo topic:
Codice: Seleziona tutto
RigaAtt = ActiveCell.Row
Cells(RigaAtt, 8).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-" & (RigaAtt - 1) & "]C:R[-1]C)"
Così facendo inserisci in colonna H, alla riga attiva la somma di tutte le righe precedenti.
La compilazione della macro è solo un po' più complessa perchè devi abbinare un testo con una variabile, quindi spezzare l'elenco creato automaticamente con la registrazione. il "-1" dopo RigaAtt riporta a H1, se i tuoi valori partono per esempio solo da H2, allora devi inserire "-2"
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Anthony47 » 14/09/12 09:32

Sono arrivato tardi, comunque e' molto piu' semplice:
Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = "=SUM(R1C:R[-1]C)"

Somma da Riga1 alla riga-1 rispetto a dove viene posizionata la formula.

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

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi wallace&gromit » 14/09/12 10:46

Acc... e io che pensavo di avere fatto una genialata... ne ho ancora di strada da percorrere!
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Phil9601 » 14/09/12 14:19

Grazie, la macro ora funziona bene.
Però ora ho un altro problema, sempre legato a questa formula.
Quando copio questi dati e li incollo accodandoli nel foglio riepilogativo dove precedentemente avevo inserito
altri dati analoghi, la funzione SOMMA mi va a prendere tutti i dati del foglio riepilogativo, cioè dalla cella H1 del foglio.
Bisognerebbe invece che la formula della somma continuasse a considerare solo le celle che aveva calcolato prima dell'acodamento
e non anche tutte le altre.
So che si può fare inserendo una riga vuota prima di accodare i nuovi dati, ma mi domando se non ci sia un sistema più elegante.
E' possibile secondo voi?
Phil9601
Utente Junior
 
Post: 12
Iscritto il: 22/03/12 08:39

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi wallace&gromit » 14/09/12 21:00

forse ritorna in auge la mia "genialata":
abbinato alla macro che riempie la pagina con i nuovi dati inserisci un contatore (che puoi chiamare RigaAtt), ad ogni dato inserito il contatore aumenta di 1.
Alla fine inserisci la formula che ti avevo proposto in precedenza:
Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = "=SUM(R[-" & (RigaAtt) & "]C:R[-1]C)"
(con la variabile RigaAtt che definisce di quante righe risalire per sommare), così la la somma considererà solamente i dati inseriti dall'ultima volta che hai lanciato la macro.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Anthony47 » 15/09/12 00:33

E' evidente che w&g con la sua modestia ha visto lontano...

In alternativa potresti fare Copia e Incolla speciale-valori sul foglio Riepilogo; suggerisco la solita macro registrata (fai Copia e poi un primo Incolla speciale-Valori e un successivo Incolla speciale-Formati) con successivo adattamento.

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

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Phil9601 » 19/09/12 13:47

Adesso la macro funziona.
Ho usato la formula di W&G, adattandola. Nella cella J1 viene calcolato il numero delle righe
che viene quindi preso in considerazione dalla macro per effettuare la somma.
Dopo avere aggiunto i nuovi dati nel foglio di riepilogo ora la formula calcola solo il totale delle
ultime celle aggiunte (meno la prima dove c'è l'intestazione).

Codice: Seleziona tutto
[Range("J1").Select
       ActiveCell.FormulaR1C1 = "=COUNTA(C[-4])"
RigaAtt = ActiveCell.Row
   Cells(RigaAtt, 8).Select
      ActiveCell.FormulaR1C1 = "=SUM(R[-" & (RigaAtt - (RigaAtt - Range("J1") - 1)) & "]C:R[-1]C)"]
Phil9601
Utente Junior
 
Post: 12
Iscritto il: 22/03/12 08:39

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi mpsinf » 17/03/13 16:02

Mi aggancio a questo post in quanto ho un problema simile.
Con questo codice vado ad inserire la formula INDIRETTO in un foglio sulla colonna G ripetuta per 9 righe

Codice: Seleziona tutto
 For na = 2 To 10
     Cells(i + 2, 7).FormulaLocal = "=INDIRETTO(A2&""!B$4"")"
     i = i + 1
 Next na

Il problema è che vorrei che la formula =INDIRETTO(A2&""!B$4"") cambiasse,
man mano che viene inserita dalla macro, in A3 ... A4... A5, ossia seguendo la variabile na del ciclo for/next
come se trascinassi la formula ma se era possibile preferivo evitarlo.

In che maniera è possibile farlo ?
XP + Excel 2003 Ita
W7 + Excel 2007 Ita
mpsinf
Utente Senior
 
Post: 168
Iscritto il: 03/09/03 18:33

Re: EXCEL MACRO INSERIMENTO FORMULA IN CELLA

Postdi Flash30005 » 17/03/13 23:06

Non devi fare il trascinamento manualmente
puoi usare questo codice
Codice: Seleziona tutto
    Range("G2").Select
    Range("G2").FormulaLocal = "=INDIRETTO(A2&""!B$4"")"
    Selection.AutoFill Destination:=Range("G2:G9"), Type:=xlFillDefault


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-


Torna a Applicazioni Office Windows


Topic correlati a "EXCEL MACRO INSERIMENTO FORMULA IN CELLA":


Chi c’è in linea

Visitano il forum: Marius44 e 14 ospiti