Excel VBA Copia l'intervallo in un altro foglio (8 modi più semplici)

  • Condividi Questo
Hugh West

Ogni volta che ne avete bisogno, potete copiare un intervallo da un foglio a un altro foglio o cartella di lavoro. Esistono diversi tipi di copia e incolla. Seguendo questo articolo, conoscerete diversi modi per utilizzare Excel VBA per copiare un intervallo in un altro foglio.

Per rendere la spiegazione più vivace, utilizzerò un set di dati di esempio che rappresenta le informazioni personali di determinate persone. Il set di dati ha 4 colonne, che sono le seguenti Nome, Cognome, Nome completo, e Email .

Scarica il libro di lavoro per esercitarti

VBA Copia l'intervallo in un altro foglio.xlsm

8 modi per copiare un intervallo in un altro foglio con Excel VBA

1. Copiare un intervallo in un altro foglio con il formato

Ogni volta che si vuole Copia un intervallo da un foglio ad un altro foglio con Formato è possibile farlo semplicemente utilizzando l'opzione VBA .

Ecco, io Copia una gamma da Set di dati foglio a ConFormato foglio.

Avviamo la procedura,

Per prima cosa, aprire il file Sviluppatore selezionare Visual Basic

È inoltre possibile utilizzare il comando ALT + F11 per aprire la finestra di dialogo VBA redattore.

Successivamente, si aprirà una nuova finestra denominata Microsoft Visual Basic per applicazioni.

Da qui, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_withFormat_ToAnother_Sheet() Range("B1:E10").Copy Worksheets("WithFormat").Range("B1:E10") End Sub 

Qui, ho dichiarato l'elemento Procedura secondaria Copia_archivio_con_formato_ad_un_altro_foglio

Ho preso la gamma B1:E10 per copiare dal foglio esistente al nome del foglio ConFormato .

Qui ho usato il metodo Copia per copiare l'intervallo selezionato, Copia copia qualsiasi intervallo con Formato .

Infine, Risparmiare il codice e tornare al foglio di lavoro.

Successivamente, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copia_archivio_con_formato_ad_un_altro_foglio selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Quindi, sarà Copia l'intervallo selezionato con Formato al nuovo foglio che ho selezionato ( ConFormato) .

2. VBA Copia un intervallo in un altro foglio senza formato

È anche possibile Copia un intervallo in un altro foglio senza Formato utilizzando l'opzione VBA .

Ecco, io Copia una gamma da Set di dati foglio a Senza formato foglio.

Iniziamo la procedura,

Ora, aprire il file Sviluppatore selezionare Visual Basic ( utilizzare il ALT + F11)

Successivamente, si aprirà Microsoft Visual Basic per applicazioni.

Quindi, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_WithoutFormat_Toanother_Sheet() Range("B1:E10").Copy Sheets("WithoutFormat").Range("B1").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 

Qui, ho dichiarato l'elemento Procedura secondaria Copia_dell'intervallo_senza_formato_in_un_altro_foglio

Ho preso la gamma B1:E10 per copiare dal foglio esistente al nome del foglio Senza formato .

Qui ho usato il metodo Copia per copiare l'intervallo selezionato, ma anche il metodo Incolla:=xlIncollaValori nel IncollaSpeciale in modo da incollare solo il metodo Valori dell'intervallo selezionato, non del formato.

Infine, Risparmiare il codice e tornare al foglio di lavoro.

Successivamente, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copia_dell'intervallo_senza_formato_in_un_altro_foglio e selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Pertanto, sarà Copia l'intervallo selezionato solo con Valori no Formato .

3. Copiare un intervallo in un altro foglio con formato e larghezza di colonna

A volte si può desiderare di Copia qualsiasi intervallo selezionato così com'è, per questo è possibile Copia una gamma con Formato e Larghezza della colonna .

Ecco, io Copia una gamma da Set di dati foglio a Formato e larghezza della colonna foglio.

Per vedere la procedura per eseguire l'attività utilizzando VBA ,

Per prima cosa, aprire il file Sviluppatore selezionare Visual Basic

È inoltre possibile utilizzare il comando ALT + F11 per aprire la finestra di dialogo VBA redattore.

Successivamente, si aprirà una nuova finestra di Microsoft Visual Basic per applicazioni.

Lì, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth() Range("B1:E10").Copy Destination:=Sheets("Format &; ColumnWidth").Range("B1") Range("B1:E10").Copy Sheets("Format &; ColumnWidth").Range("B1").PasteSpecial Paste:=xlPasteColumnWidths, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Qui, ho dichiarato l'elemento Procedura secondaria Copia_dell'intervallo_in_un_altro_foglio_con_formato_e_larghezza_della_colonna

Ho preso la gamma B1:E10 per copiare dal foglio esistente al nome del foglio di destinazione Formato e larghezza della colonna .

Qui ho usato il metodo Copia per copiare l'intervallo selezionato. Ho anche usato il metodo IncollaSpeciale dove ho menzionato Incolla:=xlIncollaLarghezzeColonna in modo da incollare l'intervallo selezionato insieme a Formato e Larghezza della colonna .

Infine, Risparmiare il codice e tornare al foglio di lavoro.

Successivamente, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copia_dell'intervallo_in_un_altro_foglio_con_formato_e_larghezza_della_colonna e selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Di conseguenza, si Copia l'intervallo selezionato con Formato e Larghezza della colonna .

4. VBA Copiare un intervallo in un altro foglio con una formula

Se nel dataset c'è una formula che si vuole copiare, non c'è da preoccuparsi: si può copiare l'intervallo che contiene Formula in un altro foglio, mantenendo intatta la formula.

Ecco, io Copia una gamma da Set di dati foglio a ConFormula foglio

Iniziamo la procedura,

Per iniziare, aprire il file Sviluppatore selezionare Visual Basic ( è anche possibile utilizzare il metodo ALT + F11 tastiera)

Successivamente, si aprirà Microsoft Visual Basic per applicazioni.

Da qui, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_withFormula_ToAnother_Sheet() Range("B1:E10").Copy Sheets("WithFormula").Range("B1").PasteSpecial Paste:=xlPasteFormulas, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Qui, ho dichiarato l'elemento Procedura secondaria Copia_archivio_con_formula_ad_un_altro_foglio

Ho preso la gamma B1:E10 per copiare dal foglio esistente al nome del foglio di destinazione ConFormula .

Qui ho usato il metodo Copia per copiare l'intervallo selezionato. Ho anche usato il metodo IncollaSpeciale dove ho menzionato Incolla:=xlIncollaFormule in modo che porti con sé il Formule insieme all'intervallo selezionato.

Infine, Risparmiare il codice e tornare al foglio di lavoro.

Quindi, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copia_archivio_con_formula_ad_un_altro_foglio selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Pertanto, sarà Copia tutti gli intervalli di celle selezionati con Formule .

Letture simili:

  • Come usare l'offset dell'intervallo in VBA (11 modi)
  • VBA per ogni cella dell'intervallo in Excel (3 metodi)
  • Come utilizzare l'oggetto Range di VBA in Excel (5 proprietà)

5. Copiare un intervallo con AutoFit in un altro foglio

Mentre Copiare un intervallo in un altro foglio è possibile utilizzare anche il comando AutoFit nel metodo VBA a AutoFit l'intervallo copiato nel nuovo foglio.

Ecco, io Copia una gamma da Set di dati foglio a AutoFit foglio

Avviamo la procedura,

Per prima cosa, aprire il file Sviluppatore selezionare Visual Basic

È inoltre possibile utilizzare il comando ALT + F11 per aprire la finestra di dialogo VBA redattore.

Successivamente, si aprirà una finestra di Microsoft Visual Basic per applicazioni.

Quindi, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_withFormat_AutoFit() Sheets("Dataset").Select Range("B1:E10").Copy Sheets("AutoFit").Select Range("B1").Select ActiveSheet.Paste Columns("B:E").AutoFit End Sub 

Qui, ho dichiarato l'elemento Procedura secondaria Copia_array_conFormato_AutoFit

Per prima cosa, ho selezionato il foglio di lavoro Set di dati . Poi ha preso la gamma B1:E10 per copiare dal foglio esistente al foglio di destinazione denominato AutoFit .

Qui ho usato il metodo Copia per copiare l'intervallo selezionato e il metodo AutoFit Il metodo si autoadatterà alle colonne date B:E .

Infine, Risparmiare il codice e tornare al foglio di lavoro.

Successivamente, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copia_array_conFormato_AutoFit selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Quindi, sarà Copia l'intervallo selezionato in un nuovo foglio e anche AutoFit le colonne.

6. VBA Copiare un intervallo in un'altra cartella di lavoro

Se si desidera, è possibile anche Copia un intervallo da un foglio a un altro foglio di una cartella di lavoro diversa.

Ecco, io Copia una gamma da Set di dati foglio a Foglio1 di Libro1 libro di lavoro.

Avviamo la procedura,

Per prima cosa, aprire il file Sviluppatore selezionare Visual Basic (y è anche possibile utilizzare il pulsante ALT + F11 tastiera)

Quindi, si aprirà Microsoft Visual Basic per applicazioni.

Successivamente, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_WithFormat_Toanother_WorkBook() Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset").Range("B3:E10"). _ Copy Workbooks("Book1").Worksheets("Sheet1").Range("B3") End Sub 

Qui, ho dichiarato l'elemento Procedura secondaria Copiare_archivio_con_formato_ad_un_altro_Libro_di_Lavoro

Ho preso la gamma B3:E10 dal nome del foglio Set di dati per copiare dal foglio esistente al nome della nuova cartella di lavoro Libro1 e il nome del foglio Foglio1 .

Qui ho usato il metodo Copia per copiare l'intervallo selezionato nella nuova cartella di lavoro.

Infine, Risparmiare il codice e tornare al foglio di lavoro.

Successivamente, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copiare_archivio_con_formato_ad_un_altro_Libro_di_Lavoro selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Ora, sarà Copia l'intervallo selezionato dal menu Set di dati in un'altra cartella di lavoro.

7. Copiare un intervallo nell'ultima riga di un altro foglio

In ogni caso, se si vuole Copia un intervallo in un altro foglio a partire da una cella particolare o dall'ultima cella, è possibile farlo utilizzando il comando VBA .

Prima di entrare nel merito della procedura, voglio dirvi che ho preso due nuove lastre composte da Nome completo, e-mail, e Indirizzo .

Osserviamo il Set di dati2 foglio prima.

Ecco il Sotto l'ultima cella foglio.

Ecco, io Copia una gamma da Set di dati2 foglio a Sotto l'ultima cella ma dalla prima cella non vuota.

Per iniziare, aprire il file Sviluppatore selezionare Visual Basic

Successivamente, si aprirà Microsoft Visual Basic per applicazioni.

Quindi, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_BelowLastCell_AnotherSheets() Sheets("Dataset2").Select lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Range("A2:C" & lr).Copy Sheets("Below Last Cell").Select lrAnotherSheet = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Cells(lrAnotherSheet + 1, 1).Select ActiveSheet.Paste Columns("A:C").AutoFit EndSub 

Qui, ho dichiarato l'elemento Procedura secondaria Copia_Range_BelowLastCell_AnotherSheets

Per prima cosa, ho selezionato il foglio Set di dati2 e poi ha usato il metodo Fila per contare i dati Ultima fila e ha mantenuto la riga contata in lr .

Poi, preso l'intervallo A2:C & lr per copiare dal foglio esistente al nome del foglio di destinazione Sotto l'ultima cella .

Anche in questo caso, è stato utilizzato il Fila per contare i dati Ultima fila di un altro foglio chiamato Sotto l'ultima cella e ha mantenuto la riga contata in lrUn altroFoglio .

Qui ho usato il metodo Copia per copiare l'intervallo selezionato e il metodo AutoFit Il metodo si autoadatterà alle colonne date A:C .

Infine, Risparmiare il codice e tornare al foglio di lavoro.

Successivamente, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copia_Range_BelowLastCell_AnotherSheets selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Quindi, sarà Copia l'intervallo selezionato e Incolla dall'ultima riga di un altro foglio.

8. VBA Copiare un intervallo nell'ultima riga di un'altra cartella di lavoro

Se si vuole Copia un intervallo all'ultima riga di un foglio di un'altra cartella di lavoro è possibile utilizzare anche l'opzione VBA .

Ecco, io Copia una gamma da Set di dati2 foglio a Foglio1 di Libro2 ma dalla prima cella non vuota.

Per avviare la procedura,

Per prima cosa, aprire il file Sviluppatore selezionare Visual Basic

È inoltre possibile utilizzare il comando ALT + F11 per aprire la finestra di dialogo VBA redattore.

Successivamente, si aprirà una nuova finestra di Microsoft Visual Basic per applicazioni.

Da qui, aprire Inserire selezionare Modulo .

A Modulo si aprirà, quindi digitare il seguente codice nel campo aperto Modulo .

 Sub Copy_Range_BelowLastCell_To_Another_Workbook() Dim wsCopy As Worksheet Dim wsDestination As Worksheet Dim lCopyLastRow As Long Dim lDestLastRow As Long Set wsCopy = Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset2") Set wsDestination = Workbooks("Book2.xlsx").Worksheets("Sheet1") lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row lDestLastRow =wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Offset(1).Row wsCopy.Range("A2:C" & lCopyLastRow).Copy wsDestination.Range("A" & lDestLastRow) End Sub 

Qui, ho dichiarato l'elemento Procedura secondaria Copia_Range_Sotto_l'ultima_cella_in_un_altro_libro_di_lavoro dove wsCopy e wsDestinazione sono Foglio di lavoro tipo, lCopyLastRow e lDestLastRow sono Lungo tipo.

In primo luogo, l'usato Set per impostare le variabili del foglio da copiare e del foglio di destinazione.

Successivamente, è stata utilizzata la funzione Fila per trovare l'ultima riga in base ai dati della colonna A nell'intervallo di copia.

Anche in questo caso, è stato utilizzato il Fila metodo per trovare la prima riga vuota in base ai dati della colonna A nell'intervallo di destinazione utilizzato anche Offset di spostarsi verso il basso di una proprietà.

Infine, Copiato i dati di Set di dati2 foglio dal Excel VBA Copiare un intervallo in un altro foglio.xlsm alla cartella di lavoro di destinazione Foglio1 della cartella di lavoro Libro2.xlsx .

Ora, Risparmiare il codice e tornare al foglio di lavoro.

Successivamente, aprire il file Vista da Macro selezionare Visualizza macro

➤ A finestra di dialogo apparirà.

Ora, dal Nome della macro selezionare il Copia_Range_Sotto_l'ultima_cella_in_un_altro_libro_di_lavoro selezionare anche la cartella di lavoro all'interno di Macro in .

Infine, Correre il selezionato Macro .

Quindi, sarà Copia l'intervallo selezionato dal foglio esistente all'ultima riga di un'altra cartella di lavoro.

Sezione pratica

Nella cartella di lavoro è presente un foglio di esercitazione per mettere in pratica questi modi spiegati di Excel. VBA copiare l'intervallo in un altro foglio.

Conclusione

In questo articolo, ho illustrato 8 diversi tipi di metodi facili e veloci per Excel VBA Questi diversi modi vi aiuteranno a copiare un intervallo da un foglio all'altro e anche da un foglio a un'altra cartella di lavoro. Infine, se avete qualsiasi tipo di suggerimento, idea o feedback, non esitate a commentare qui sotto.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.