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.

Foglio di lavoro con la cella C2 selezionata e la formula =A2*B2 visibile nella barra della formula.
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.

Scheda Sviluppo Excel con il pulsante Visual Basic evidenziato sopra una griglia di una cartella di lavoro.
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.

Riquadro del codice dell'editor di Visual Basic che mostra gli intervalli del foglio di lavoro sourceRange e destRange e un'assegnazione FormulaR1C1.
La macro assegna il modello FormulaR1C1 dell'intervallo di origine all'intervallo di destinazione.

Esegui e salva la macro

  1. 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 .
  2. 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.
  3. 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.
Riepilogo del foglio di lavoro con la cella C2 selezionata e la formula copiata =A2*B2 visibile nella barra della formula.
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:

wb.Worksheets("Source").Range("C2:C10").Copy _
    Destination:=wb.Worksheets("Summary").Range("C2")

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

  1. Alessandro -

    Semplice e diretto. Ho sempre evitato di usare VBA, ma ora potrei ripensarci. Grazie per questi consigli

  2. Katia Milano -

    Incredibile come un piccolo pezzo di codice possa semplificare così tanto le cose. Ero frustrata, ora sono felice!

  3. Raffaele -

    Qualcuno sa se ci sono limitazioni per le formule molto complesse? Vorrei sapere se ci sono problemi di compatibilità.

  4. Riccardo -

    Ciao, ho un problema con le formule. Qualcuno può darmi una mano per usare VBA in un foglio specifico

  5. Giovanni -

    Una domanda: posso usare questo metodo per copiare anche i grafici? Ho bisogno di una guida simile per quello.

  6. Elena -

    Mi è piaciuto molto! È stata una lettura molto chiara e comprensibile. Continued così

  7. Laura -

    Grazie per queste informazioni utili! Ho sempre voluto imparare a usare VBA, questo è un ottimo inizio

  8. Luca il Programmatore -

    Ciao a tutti! Ho creato un piccolo script VBA per copiare formule in massa. Se vi interessa, posso condividerlo

  9. Pietro -

    Ho provato e ha funzionato! Ma devo dire che mi ha dato un po' di grattacapi all'inizio. Ma ora sono un esperto

  10. Francesca -

    Che bella scoperta! Questa guida ha semplificato il mio lavoro su Excel. Grazie a chi l'ha scritta

  11. Matteo -

    Non posso credere a quanto è semplice! Ho sempre fatto tutto manualmente. Grazie per aver condiviso il link!

  12. Giovanna 16 -

    Ho trovato questo articolo per caso e mi ha dato una grande mano! Qualcuno ha suggerimenti su risorse per approfondire?

  13. Federico -

    Ottimo articolo! Copiare le formule su un altro foglio di Excel VBA è un'abilità fondamentale. Grazie per le spiegazioni dettagliate!

  14. Sophie IT -

    Salut a tutti! Questo articolo è davvero utile, perfetto per i programmatori alle prime armi come me!

  15. Sara 88 -

    Ho provato a copiare le formule come suggerito e ha funzionato perfettamente! Grazie mille!

  16. Giulia C. -

    Non sapevo che fosse così semplice copiare formule con VBA. Adoro Excel, grazie per il suggerimento

  17. Carlo -

    Bellissimo articolo! Mi ha davvero aiutato a capire come utilizzare VBA per le formule. Spero che ci siano altri articoli simili!

  18. Stefano -

    Ho seguito i passaggi e finalmente ho trasferito tutte le mie formule senza problemi! Fantastico

  19. Marco -

    Ma che genius! Finalmente posso trasferire le mie formule da un foglio all'altro senza errori

  20. Martina -

    Ho sempre avuto problemi a copiare formule, ma ora ho trovato la soluzione! Grazie innanzitutto per le dritte utili

  21. Marta P. -

    Wow, non avrei mai pensato che copia-incolla fosse così semplice in VBA! Explorerò di più su questo argomento

  22. Rita -

    Volevo solo dire un grande grazie! Questo mi ha risparmiato così tanto tempo prezioso

Lascia un commento

Trasforma le foto in dipinti, schizzi e cartoni animati con FotoSketcher

Trasforma le foto in dipinti, schizzi e cartoni animati con FotoSketcher

Trasforma una foto in un dipinto, uno schizzo a matita o un fumetto con FotoSketcher Studio. Scopri come scegliere un effetto, regolare l'anteprima e salvare la tua opera.

Analizza e identifica i file audio in dettaglio con Audio Identifier

Analizza e identifica i file audio in dettaglio con Audio Identifier

Scopri cosa rivela Audio Identifier su bitrate, codificatori e tag, come funziona il suo flusso di lavoro precedente e quali strumenti attuali analizzano i file o identificano i brani.

My Photo Index: un organizzatore di foto open source per Windows

My Photo Index: un organizzatore di foto open source per Windows

My Photo Index è un catalogo di foto di Windows, ormai datato, per l'etichettatura, la valutazione e la visualizzazione di immagini locali. Esamina le sue funzionalità documentate, i limiti di compatibilità e un'alternativa ancora supportata.

Modifica attributi, date e orari di file e cartelle con Attribute Changer

Modifica attributi, date e orari di file e cartelle con Attribute Changer

Scopri come utilizzare Attribute Changer per modificare gli attributi e i timestamp dei file di Windows, aggiornare le date EXIF ​​delle foto JPEG e visualizzare in anteprima le modifiche in blocco in tutta sicurezza.

Come impostare uno sfondo diverso su ciascun monitor in Windows 10

Come impostare uno sfondo diverso su ciascun monitor in Windows 10

Imposta uno sfondo diverso per ogni monitor di Windows 10, identifica gli schermi, regola l'adattamento dell'immagine e risolvi i problemi relativi alle opzioni del monitor mancanti.

pViewer: Un visualizzatore di immagini e lettore di manga e fumetti minimalista

pViewer: Un visualizzatore di immagini e lettore di manga e fumetti minimalista

Scopri cosa fa pViewer, come funzionano le sue modalità foto e fumetto, quale edizione per Windows scaricare e quali sono le differenze tra la versione precedente e quella riscritta.

Come passare allo sfondo successivo del desktop con una scorciatoia da tastiera in Windows 7 e 8

Come passare allo sfondo successivo del desktop con una scorciatoia da tastiera in Windows 7 e 8

Configura una presentazione di immagini in Windows 7 o 8, crea un piccolo collegamento in VBScript e assegna una scorciatoia da tastiera per passare allo sfondo successivo.

NeoDownloader: Imposta i parametri e scarica in blocco le immagini dai siti web

NeoDownloader: Imposta i parametri e scarica in blocco le immagini dai siti web

Scopri come creare un progetto NeoDownloader, scegliere l'ambito di scansione, impostare i filtri delle immagini e la destinazione, e rivedere i download in batch.

XnConvert: Applica effetti e converti formati di immagine in batch

XnConvert: Applica effetti e converti formati di immagine in batch

Utilizza XnConvert per applicare effetti, ridimensionare le foto e convertire i formati delle immagini in batch. Scegli le impostazioni di output, visualizza in anteprima le modifiche e proteggi i tuoi originali.

Monitora le ore di lavoro e l'utilizzo del computer con ManicTime.

Monitora le ore di lavoro e l'utilizzo del computer con ManicTime.

Scopri come ManicTime tiene traccia dell'utilizzo delle applicazioni, dei tempi di attività e di inattività e dei documenti, e trasforma la cronologia delle tue attività in tag di progetto e fogli presenze.