Excel VBA Copiați intervalul în altă foaie (8 cele mai simple moduri)

  • Imparte Asta
Hugh West

Ori de câte ori aveți nevoie, puteți copia un interval de la o foaie la o altă foaie sau registru de lucru. Există diferite tipuri de copiere și lipire. În urma acestui articol, veți cunoaște diferite modalități de a utiliza Excel VBA pentru a copia intervalul de date în altă foaie.

Pentru ca explicația să fie mai vie, voi folosi un set de date de exemplu care reprezintă informațiile personale ale anumitor persoane. Setul de date are 4 coloane. Aceste coloane sunt Nume, Prenume, Nume de familie, Nume complet, și Email .

Descărcați caietul de lucru pentru practică

VBA Copierea intervalului VBA în altă foaie.xlsm

8 moduri de a copia intervalul Excel VBA în altă foaie

1. Copierea unui interval în altă foaie cu ajutorul formatului

Ori de câte ori doriți să Copiați un interval de la o foaie la alta cu Format puteți face acest lucru pur și simplu folosind funcția VBA .

Uite, eu... Copiați o gamă de la Set de date foaie la WithFormat foaie.

Să începem procedura,

În primul rând, deschideți fișierul Dezvoltator tab>> selectați Visual Basic

De asemenea, puteți utiliza și funcția ALT + F11 pentru a deschide fereastra VBA editor.

Apoi, se va deschide o fereastră nouă numită Microsoft Visual Basic pentru aplicații.

De acolo, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

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

Aici, am declarat Subprocedură Copiere_Ranjament_cu_format_pe_alta_foaie

Am luat gama B1:E10 pentru a copia din foaia existentă în foaia cu numele foii WithFormat .

Aici, am folosit Copiați pentru a copia intervalul selectat, Copiați copiază orice interval cu Format .

În cele din urmă, Salvați codul și reveniți la foaia de lucru.

În continuare, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copiere_Ranjament_cu_format_pe_alta_foaie selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Prin urmare, acesta va Copiați intervalul selectat cu Format la noua foaie pe care am selectat-o ( WithFormat) .

2. VBA Copiați un interval într-o altă foaie fără format

De asemenea, este posibil să Copiați un interval pe o altă foaie fără a Format prin utilizarea VBA .

Poftim, eu... Copiați o gamă de la Set de date foaie la WithoutFormat foaie.

Să începem procedura,

Acum, deschideți fereastra Dezvoltator tab>> selectați Visual Basic ( utilizați ALT + F11)

În continuare, se va deschide Microsoft Visual Basic pentru aplicații.

Apoi, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

 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 

Aici, am declarat Subprocedură Copiere_Ranjament_fără_format_pe_alta_foaie

Am luat gama B1:E10 pentru a copia din foaia existentă în foaia cu numele foii WithoutFormat .

Aici, am folosit Copiați pentru a copia intervalul selectat, dar a menționat și metoda Paste:=xlPasteValues în PasteSpecial astfel încât să lipească doar Valori a intervalului selectat, nu a formatului.

În cele din urmă, Salvați codul și reveniți la foaia de lucru.

În continuare, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copiere_Ranjament_fără_format_pe_alta_foaie și selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Astfel, se va Copiați intervalul selectat numai cu Valori nu Format .

3. Copierea unui interval pe o altă foaie cu format și lățime de coloană

Uneori este posibil să doriți să Copiați orice interval selectat așa cum este, pentru aceasta puteți Copiați o gamă cu Format și Lățimea coloanei .

Uite, eu... Copiați o gamă de la Set de date foaie la Format & Lățimea coloanei foaie.

Pentru a vedea procedura de realizare a sarcinii folosind VBA ,

În primul rând, deschideți fișierul Dezvoltator tab>> selectați Visual Basic

De asemenea, puteți utiliza și funcția ALT + F11 pentru a deschide fereastra VBA editor.

Apoi, se va deschide o nouă fereastră de Microsoft Visual Basic pentru aplicații.

Acolo, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

 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 

Aici, am declarat Subprocedură Copiere_la_oparte_la_altă_foaie_cu_format_și_lărgimea_columnei

Am luat gama B1:E10 pentru a copia de pe foaia existentă pe foaia de destinație. Format & Lățimea coloanei .

Aici, am folosit Copiați pentru a copia intervalul selectat. De asemenea, am folosit metoda PasteSpecial metoda în care am menționat Paste:=xlPasteColumnWidths astfel încât să lipească intervalul selectat împreună cu Format și Lățimea coloanei .

În cele din urmă, Salvați codul și reveniți la foaia de lucru.

În continuare, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copiere_la_oparte_la_altă_foaie_cu_format_și_lărgimea_columnei și selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Ca urmare, acesta va Copiați intervalul selectat cu Format și Lățimea coloanei .

4. VBA Copiați un interval într-o altă foaie cu ajutorul formulei

În cazul în care aveți o formulă în setul de date pe care doriți să o copiați, nu vă faceți griji! Puteți copia intervalul care conține Formula pe o altă foaie, păstrând formula intactă.

Uite, eu... Copiați o gamă de la Set de date foaie la CuFormula foaie

Să începem procedura,

Pentru început, deschideți fereastra Dezvoltator tab>> selectați Visual Basic ( puteți utiliza și funcția ALT + F11 tastatură)

În continuare, se va deschide Microsoft Visual Basic pentru aplicații.

De acolo, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

 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 

Aici, am declarat Subprocedură Copiere_Ranjament_cu_formula_în_alta_foaie

Am luat gama B1:E10 pentru a copia de pe foaia existentă pe foaia de destinație. CuFormula .

Aici, am folosit Copiați pentru a copia intervalul selectat. De asemenea, am folosit metoda PasteSpecial metoda în care am menționat Paste:=xlPasteFormulas astfel încât să poarte Formule împreună cu intervalul selectat.

În cele din urmă, Salvați codul și reveniți la foaia de lucru.

Apoi, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copiere_Ranjament_cu_formula_în_alta_foaie selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Astfel, se va Copiați toate intervalele de celule selectate cu Formule .

Lecturi similare:

  • Cum se utilizează VBA Range Offset (11 moduri)
  • VBA pentru fiecare celulă din interval în Excel (3 metode)
  • Cum se utilizează obiectul Range din VBA în Excel (5 proprietăți)

5. Copierea unui interval cu AutoFit pe o altă foaie

În timp ce Copiere un interval pe o altă foaie, puteți utiliza și funcția AutoFit din cadrul metodei VBA la AutoFit intervalul copiat în noua foaie.

Uite, eu... Copiați o gamă de la Set de date foaie la AutoFit foaie

Să începem procedura,

În primul rând, deschideți fișierul Dezvoltator tab>> selectați Visual Basic

De asemenea, puteți utiliza și funcția ALT + F11 pentru a deschide fereastra VBA editor.

În continuare, se va deschide o fereastră de Microsoft Visual Basic pentru aplicații.

Apoi, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

 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 

Aici, am declarat Subprocedură Copy_Range_withFormat_AutoFit

În primul rând, am selectat foaia de lucru Set de date . apoi a luat gama B1:E10 pentru a copia din foaia existentă în foaia de destinație numită AutoFit .

Aici, am folosit Copiați pentru a copia intervalul selectat și metoda AutoFit metoda va ajusta automat coloanele date B:E .

În cele din urmă, Salvați codul și reveniți la foaia de lucru.

În continuare, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copy_Range_withFormat_AutoFit selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Prin urmare, acesta va Copiați intervalul selectat pe o foaie nouă și, de asemenea AutoFit coloanele.

6. VBA Copiați un interval în alt registru de lucru

Dacă doriți, puteți, de asemenea, să Copiați un interval de la o foaie la o altă foaie dintr-un registru de lucru diferit.

Uite, eu... Copiați o gamă de la Set de date foaie la Foaie1 de Carte1 caiet de lucru.

Să începem procedura,

În primul rând, deschideți fișierul Dezvoltator tab>> selectați Visual Basic (y De asemenea, puteți utiliza ALT + F11 tastatură)

Apoi, se va deschide Microsoft Visual Basic pentru aplicații.

În continuare, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

 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 

Aici, am declarat Subprocedură Copiere_Ranjament_cu_format_într-o_altă_carte_de_lucru

Am luat gama B3:E10 de la numele foii Set de date pentru a copia din foaia existentă în noul registru de lucru Carte1 și numele foii Foaie1 .

Aici, am folosit Copiați pentru a copia intervalul selectat în noul registru de lucru.

În cele din urmă, Salvați codul și reveniți la foaia de lucru.

În continuare, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copiere_Ranjament_cu_format_într-o_altă_carte_de_lucru selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Acum, se va Copiați intervalul selectat din Set de date în alt registru de lucru.

7. Copierea unui interval în ultimul rând al unei alte foi de calcul

În orice caz, dacă doriți să Copiați un interval într-o altă foaie de la o anumită celulă sau de la ultima celulă, puteți face acest lucru folosind funcția VBA .

Înainte de a intra în procedură, vreau să vă spun că, am luat două foi noi constând în Nume și prenume, e-mail, și Adresa .

Să observăm Set de date2 foaie mai întâi.

Aici este Sub ultima celulă foaie.

Uite, eu... Copiați o gamă de la Set de date2 foaie la Sub ultima celulă dar din prima celulă care nu este goală.

Pentru început, deschideți fereastra Dezvoltator tab>> selectați Visual Basic

În continuare, se va deschide Microsoft Visual Basic pentru aplicații.

Apoi, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

 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 

Aici, am declarat Subprocedură Copy_Range_BelowLastCell_AnotherSheets

În primul rând, am selectat foaia Set de date2 și apoi a folosit Rândul pentru a număra numărul Ultimul rând și a păstrat rândul numărat în lr .

Apoi a luat gama A2:C & lr pentru a copia de pe foaia existentă pe foaia de destinație. Sub ultima celulă .

Din nou, a folosit Rândul pentru a număra numărul Ultimul rând a unei alte foi numite Sub ultima celulă și a păstrat rândul numărat în lrAnotherSheet .

Aici, am folosit Copiați pentru a copia intervalul selectat și metoda AutoFit metoda va ajusta automat coloanele date A:C .

În cele din urmă, Salvați codul și reveniți la foaia de lucru.

În continuare, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copy_Range_BelowLastCell_AnotherSheets selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Prin urmare, acesta va Copiați intervalul selectat și va Paste din ultimul rând al unei alte foi.

8. VBA Copiați un interval în ultimul rând al unui alt registru de lucru

Dacă doriți să Copiați un interval la ultimul rând al unei alte foi a unui registru de lucru, puteți utiliza și funcția VBA .

Uite, eu... Copiați o gamă de la Set de date2 foaie la Foaie1 de Carte2 dar din prima celulă care nu este goală.

Pentru a începe procedura,

În primul rând, deschideți fișierul Dezvoltator tab>> selectați Visual Basic

De asemenea, puteți utiliza și funcția ALT + F11 pentru a deschide fereastra VBA editor.

Apoi, se va deschide o nouă fereastră de Microsoft Visual Basic pentru aplicații.

De acolo, deschideți Introduceți >> selectați Modul .

A Modul se va deschide, apoi introduceți următorul cod în fereastra deschisă Modul .

 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 

Aici, am declarat Subprocedură Copiere_Range_Below_BelastCell_To_Another_Workbook unde wsCopy și wsDestination sunt Fișa de lucru tip, lCopyLastRow și lDestLastLastRow sunt Lung tip.

În primul rând, a folosit Set pentru a seta variabilele pentru foaia de copiat și foaia de destinație.

În continuare, a fost folosit Rândul pentru a găsi ultimul rând pe baza datelor din coloana A în intervalul de copiere.

Din nou, a folosit Rândul pentru a găsi primul rând gol pe baza datelor din coloana A în intervalul de destinație folosit, de asemenea, în Offset pentru a coborî o proprietate.

În cele din urmă, Copiat datele din Set de date2 foaie de la Excel VBA Copiați intervalul în altă foaie.xlsm la destinație Foaie1 a caietului de lucru Carte2.xlsx .

Acum, Salvați codul și reveniți la foaia de lucru.

În continuare, deschideți fereastra Vezi tab>> de la Macros >> selectați Vizualizați macrourile

➤ A caseta de dialog va apărea.

Acum, de la Numele macroului selectați Copiere_Range_Below_BelastCell_To_Another_Workbook selectați, de asemenea, registrul de lucru din Macros în .

În cele din urmă, Rulați selectat Macro .

Prin urmare, acesta va Copiați intervalul selectat din foaia existentă la ultimul rând al unui alt registru de lucru.

Secțiunea practică

Am pus la dispoziție o foaie de practică în caietul de lucru pentru a exersa aceste moduri explicate de Excel VBA copiați intervalul pe o altă foaie.

Concluzie

În acest articol, am explicat 8 tipuri diferite de modalități ușoare și rapide de Excel VBA copierea intervalului într-o altă foaie. Aceste moduri diferite vă vor ajuta să copiați un interval de la o foaie la alta și, de asemenea, de la o foaie la un alt registru de lucru. Nu în ultimul rând, dacă aveți orice fel de sugestii, idei și feedback, vă rugăm să nu ezitați să comentați mai jos.

Hugh West este un trainer și analist Excel cu o experiență de peste 10 ani în industrie. Deține o diplomă de licență în contabilitate și finanțe și un master în administrarea afacerilor. Hugh are o pasiune pentru predare și a dezvoltat o abordare unică de predare care este ușor de urmărit și de înțeles. Cunoștințele sale experte despre Excel au ajutat mii de studenți și profesioniști din întreaga lume să-și îmbunătățească abilitățile și să exceleze în cariera lor. Prin blogul său, Hugh își împărtășește cunoștințele lumii, oferind tutoriale gratuite Excel și instruire online pentru a ajuta persoanele și companiile să-și atingă întregul potențial.