Home
» WINDOWS
»
Copiare formule Excel in un altro foglio con VBA
Copiare formule Excel in un altro foglio con VBA
Per copiare formule da un foglio di lavoro Excel a un altro tramite VBA, è necessario assegnare l'intervallo di origine FormulaR1C1a un intervallo di destinazione di dimensioni analoghe. In questo modo, la formula viene trasferita senza copiare la formattazione delle celle e i riferimenti relativi si adattano alle celle di destinazione. La macro seguente utilizza i nomi dei fogli di lavoro, quindi non dipende dal foglio attivo.
L'esempio del foglio di lavoro Source utilizza la formula =A2*B2 nella cella C2.
Prima di iniziare
Utilizza la versione desktop di Excel; Excel per il Web può aprire una cartella di lavoro contenente macro, ma non può creare, eseguire o modificare macro VBA, come spiegato nella guida di Microsoft su Excel per il Web . Verifica i nomi esatti delle schede e gli indirizzi di origine e di destinazione. In questo esempio, le formule si trovano in Source!C2:C10e verranno inserite in Summary, a partire da C2.
L'esempio utilizza ThisWorkbook, che indica la cartella di lavoro in cui è memorizzato il codice della macro. Mantieni la macro in quella cartella di lavoro oppure modifica il riferimento alla cartella di lavoro se il codice è memorizzato altrove. I nomi dei fogli di lavoro vengono selezionati dalla Worksheetsraccolta della cartella di lavoro; il nome tra virgolette deve corrispondere esattamente alla tabulazione.
Apri l'editor di Visual Basic dalla scheda Sviluppo di Excel.
Copia le formule in un altro foglio con VBA
Apri l'editor di Visual Basic dalla scheda Sviluppo di Excel , scegli Visual Basic , quindi seleziona Inserisci > Modulo . Incolla questa procedura nel modulo:
Sub CopyFormulasToAnotherSheet()
Dim wb As Workbook
Dim sourceRange As Range
Dim targetCell As Range
Dim targetRange As Range
Set wb = ThisWorkbook
Set sourceRange = wb.Worksheets("Source").Range("C2:C10")
Set targetCell = wb.Worksheets("Summary").Range("C2")
Set targetRange = targetCell.Resize(sourceRange.Rows.Count, _
sourceRange.Columns.Count)
targetRange.FormulaR1C1 = sourceRange.FormulaR1C1
End Sub
Modifica gli indirizzi Source, Summary, e l'intervallo in modo che corrispondano alla tua cartella di lavoro. targetCellè la prima cella di destinazione; Resizefa sì che la destinazione abbia la stessa altezza e larghezza dell'origine, requisito necessario per un'assegnazione su più celle. Per una singola formula, imposta l'origine su una cella, ad esempio C2.
La macro assegna il modello FormulaR1C1 dell'intervallo di origine all'intervallo di destinazione.
Esegui e salva la macro
Posiziona il punto di inserimento in un punto qualsiasi all'interno CopyFormulasToAnotherSheetdell'editor di Visual Basic e premi F5 . In alternativa, puoi tornare a Excel, selezionare Sviluppo > Macro , scegliere la procedura e selezionare Esegui .
Controlla le celle di destinazione su Summary. Con una formula di origine come =A2*B2in Source!C2, il modello di formula copiato in Summary!C2è anche =A2*B2. Se la formula deve continuare a leggere i valori sul foglio Origine, qualifica tali riferimenti nella formula di origine, ad esempio =Source!A2*Source!B2.
Salva la cartella di lavoro come Cartella di lavoro di Excel con abilitazione macro ( .xlsm) in modo che la procedura VBA venga mantenuta. Se Excel chiede informazioni sulla sicurezza delle macro, esegui solo le macro di cui ti fidi.
Il foglio di lavoro di destinazione ora presenta lo stesso schema di formule relative in C2.
Scegli il metodo giusto per le tue formule
FormulaR1C1Copia la struttura della formula. Un riferimento due colonne a sinistra della cella della formula rimane due colonne a sinistra nella destinazione; i riferimenti assoluti restano fissi. Questo è utile quando si desidera lo stesso schema di calcolo in un intervallo di destinazione corrispondente. Non copia la formattazione. Se l'intervallo di origine include costanti o celle vuote, anche queste vengono trasferite come valori o celle vuote, quindi è consigliabile utilizzare un intervallo composto dalle formule che si intende copiare.
Per un comportamento di copia Excel normale, incluse formule e formattazione, utilizzare Range.Copycon una destinazione:
Questo metodo copia l'intero contenuto e la formattazione della cella; Excel regola i riferimenti relativi come farebbe durante una copia standard. Utilizzatelo quando la destinazione deve ricevere più delle sole formule. Microsoft documenta sia la proprietà FormulaR1C1 che il metodo Range.Copy .
Risolvere i problemi comuni
"Indice fuori intervallo": verificare che i nomi dei fogli di lavoro siano scritti esattamente come appaiono nelle schede, spazi inclusi.
La formula punta a celle errate:FormulaR1C1 contiene riferimenti relativi al foglio di destinazione. Aggiungere il nome del foglio alla formula quando questa deve continuare a puntare al foglio di origine.
Il codice utilizza la cartella di lavoro errata:ThisWorkbook fa riferimento al file che contiene la macro. Se il codice si trova in una cartella di lavoro personale per le macro, specificare wbinvece il nome della cartella di lavoro aperta.
La macro non è presente nell'elenco: verificare che il file sia salvato correttamente e che le macro siano abilitate per un file attendibile. Le istruzioni.xlsm di Microsoft relative alle macro spiegano come abilitare la scheda Sviluppo ed eseguire una procedura.
Quando i nomi di origine e di destinazione, gli intervalli e il comportamento di riferimento vengono impostati intenzionalmente, la macro può copiare una singola formula o un intero blocco senza selezionare fogli o fare affidamento sugli appunti.
(22) Commenti
Alessandro -
Semplice e diretto. Ho sempre evitato di usare VBA, ma ora potrei ripensarci. Grazie per questi consigli
Katia Milano -
Incredibile come un piccolo pezzo di codice possa semplificare così tanto le cose. Ero frustrata, ora sono felice!
Raffaele -
Qualcuno sa se ci sono limitazioni per le formule molto complesse? Vorrei sapere se ci sono problemi di compatibilità.
Riccardo -
Ciao, ho un problema con le formule. Qualcuno può darmi una mano per usare VBA in un foglio specifico
Giovanni -
Una domanda: posso usare questo metodo per copiare anche i grafici? Ho bisogno di una guida simile per quello.
Elena -
Mi è piaciuto molto! È stata una lettura molto chiara e comprensibile. Continued così
Laura -
Grazie per queste informazioni utili! Ho sempre voluto imparare a usare VBA, questo è un ottimo inizio
Luca il Programmatore -
Ciao a tutti! Ho creato un piccolo script VBA per copiare formule in massa. Se vi interessa, posso condividerlo
Pietro -
Ho provato e ha funzionato! Ma devo dire che mi ha dato un po' di grattacapi all'inizio. Ma ora sono un esperto
Francesca -
Che bella scoperta! Questa guida ha semplificato il mio lavoro su Excel. Grazie a chi l'ha scritta
Matteo -
Non posso credere a quanto è semplice! Ho sempre fatto tutto manualmente. Grazie per aver condiviso il link!
Giovanna 16 -
Ho trovato questo articolo per caso e mi ha dato una grande mano! Qualcuno ha suggerimenti su risorse per approfondire?
Federico -
Ottimo articolo! Copiare le formule su un altro foglio di Excel VBA è un'abilità fondamentale. Grazie per le spiegazioni dettagliate!
Sophie IT -
Salut a tutti! Questo articolo è davvero utile, perfetto per i programmatori alle prime armi come me!
Sara 88 -
Ho provato a copiare le formule come suggerito e ha funzionato perfettamente! Grazie mille!
Giulia C. -
Non sapevo che fosse così semplice copiare formule con VBA. Adoro Excel, grazie per il suggerimento
Carlo -
Bellissimo articolo! Mi ha davvero aiutato a capire come utilizzare VBA per le formule. Spero che ci siano altri articoli simili!
Stefano -
Ho seguito i passaggi e finalmente ho trasferito tutte le mie formule senza problemi! Fantastico
Marco -
Ma che genius! Finalmente posso trasferire le mie formule da un foglio all'altro senza errori
Martina -
Ho sempre avuto problemi a copiare formule, ma ora ho trovato la soluzione! Grazie innanzitutto per le dritte utili
Marta P. -
Wow, non avrei mai pensato che copia-incolla fosse così semplice in VBA! Explorerò di più su questo argomento
Rita -
Volevo solo dire un grande grazie! Questo mi ha risparmiato così tanto tempo prezioso
Alessandro -
Semplice e diretto. Ho sempre evitato di usare VBA, ma ora potrei ripensarci. Grazie per questi consigli
Katia Milano -
Incredibile come un piccolo pezzo di codice possa semplificare così tanto le cose. Ero frustrata, ora sono felice!
Raffaele -
Qualcuno sa se ci sono limitazioni per le formule molto complesse? Vorrei sapere se ci sono problemi di compatibilità.
Riccardo -
Ciao, ho un problema con le formule. Qualcuno può darmi una mano per usare VBA in un foglio specifico
Giovanni -
Una domanda: posso usare questo metodo per copiare anche i grafici? Ho bisogno di una guida simile per quello.
Elena -
Mi è piaciuto molto! È stata una lettura molto chiara e comprensibile. Continued così
Laura -
Grazie per queste informazioni utili! Ho sempre voluto imparare a usare VBA, questo è un ottimo inizio
Luca il Programmatore -
Ciao a tutti! Ho creato un piccolo script VBA per copiare formule in massa. Se vi interessa, posso condividerlo
Pietro -
Ho provato e ha funzionato! Ma devo dire che mi ha dato un po' di grattacapi all'inizio. Ma ora sono un esperto
Francesca -
Che bella scoperta! Questa guida ha semplificato il mio lavoro su Excel. Grazie a chi l'ha scritta
Matteo -
Non posso credere a quanto è semplice! Ho sempre fatto tutto manualmente. Grazie per aver condiviso il link!
Giovanna 16 -
Ho trovato questo articolo per caso e mi ha dato una grande mano! Qualcuno ha suggerimenti su risorse per approfondire?
Federico -
Ottimo articolo! Copiare le formule su un altro foglio di Excel VBA è un'abilità fondamentale. Grazie per le spiegazioni dettagliate!
Sophie IT -
Salut a tutti! Questo articolo è davvero utile, perfetto per i programmatori alle prime armi come me!
Sara 88 -
Ho provato a copiare le formule come suggerito e ha funzionato perfettamente! Grazie mille!
Giulia C. -
Non sapevo che fosse così semplice copiare formule con VBA. Adoro Excel, grazie per il suggerimento
Carlo -
Bellissimo articolo! Mi ha davvero aiutato a capire come utilizzare VBA per le formule. Spero che ci siano altri articoli simili!
Stefano -
Ho seguito i passaggi e finalmente ho trasferito tutte le mie formule senza problemi! Fantastico
Marco -
Ma che genius! Finalmente posso trasferire le mie formule da un foglio all'altro senza errori
Martina -
Ho sempre avuto problemi a copiare formule, ma ora ho trovato la soluzione! Grazie innanzitutto per le dritte utili
Marta P. -
Wow, non avrei mai pensato che copia-incolla fosse così semplice in VBA! Explorerò di più su questo argomento
Rita -
Volevo solo dire un grande grazie! Questo mi ha risparmiato così tanto tempo prezioso