Macro pentru a copia și lipi de pe o foaie de lucru pe alta (15 metode)

  • Imparte Asta
Hugh West

Cuprins

Atunci când avem de-a face cu mai multe foi Excel, uneori trebuie să copiem date dintr-o foaie de calcul în alta. Implementarea VBA este cea mai eficientă, mai rapidă și mai sigură metodă de a executa orice operațiune în Excel. În acest articol, vă vom arăta cum să copierea și lipirea datelor dintr-o foaie de calcul în alta în Excel, cu ajutorul funcției Macro VBA .

Descărcați caietul de lucru

Puteți descărca gratuit caietul de lucru Excel de practică de aici.

Copiere și lipire dintr-o foaie de lucru în alta.xlsm

15 Metode cu VBA pentru a copia și lipi date de pe o foaie de lucru pe alta în Excel

În această secțiune, veți învăța 15 metode prin care puteți să copiați datele dintr-o foaie de calcul și le lipiți în alta cu VBA în Excel.

Mai sus este setul de date pe care acest articol îl va lua ca exemplu.

1. Macro VBA încorporat pentru a copia și lipi un interval de date de pe o foaie de lucru pe alta

Pașii pentru copierea și lipirea unui interval de date dintr-o foaie de calcul în alta cu VBA sunt descrise mai jos.

Pași:

  • La început, apăsați Alt + F11 de pe tastatură sau mergeți la fila Dezvoltator -> Visual Basic pentru a deschide Editor Visual Basic .

  • În fereastra de cod pop-up, din bara de meniu, faceți clic pe Inserare -> Modul .

  • Acum, copiați următorul cod și pastă în fereastra de cod .
 Sub CopyPasteToAnotherSheet() Worksheets("Dataset").Range("B2:F9").Copy Worksheets("CopyPaste").Range("B2") End Sub 

Codul dumneavoastră este acum gata de a fi executat.

Această bucată de cod va copiați intervalul de la B2 la F9 de la foaie numită Set de date și lipiți cele din B2 Gama în CopyPaste foaia nominală .

  • Apoi, apăsați F5 de pe tastatură sau, din bara de meniu, selectați Run -> Run Sub/UserForm Puteți, de asemenea, să faceți clic pe pictograma mică de redare din bara de submeni pentru a rula macrocomenzul.

Priviți următoarea imagine.

În cele din urmă, toate datele din Set de date este acum copiată în fișierul CopyPaste foaie din registrul nostru de lucru Excel.

Citește mai mult: Excel VBA: Copierea intervalului în alt registru de lucru

2. Macro VBA pentru a copia și lipi date de pe o foaie de lucru activă pe alta în Excel

În secțiunea anterioară, nu am cerut ca foaia de lucru să fie activată. Dar în această secțiune, vom învăța cum să copierea și lipirea datelor într-o foaie de calcul activă .

Pași:

  • În același mod ca și înainte, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • În fereastra de cod, copiați următorul cod și pastă it.
 Sub CopyPasteToAnotherActiveSheet() 'Copiați datele din foaia sursă Sheets("Dataset").Range("B2:F9").Copy 'Activați foaia de destinație Sheets("Paste").Activate 'Selectați intervalul de destinație Range("B2").Select 'Lipiți în destinație ActiveSheet.Paste Application.CutCopyMode = False End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați codul prezentat mai sus și vedeți rezultatul în imaginea următoare.

De data aceasta, toate datele din Set de date este acum copiată în fișierul Paste pe care am activat-o înainte de a copia datele.

Citește mai mult: Formula Excel pentru a copia textul dintr-o celulă în altă foaie

3. Copiați și lipiți o singură celulă dintr-o foaie de lucru în alta în Excel cu ajutorul macro VBA

În secțiunile de mai sus, ați învățat cum să copiați și să lipiți un interval de date de pe o foaie de calcul pe alta. Acum, veți vedea cum să copiați și lipiți când aveți o singură bucată de date în foaia de calcul Excel.

Uitați-vă la următoarea imagine, imaginea Gama este alcătuită dintr-o singură valoare.

Vom vedea cum putem copiați și lipiți această celulă într-o altă foaie în Excel cu VBA .

Pași:

  • După cum s-a arătat mai sus, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • În fereastra de cod, copiați următorul cod și pastă
 Sub CopyPasteSingleRangeToAnotherSheet() Worksheets("Range").Range("B4").Copy Worksheets("CopyRange").Range("B2") End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați această bucată de cod și observați următoarea imagine.

Acele date unice " Copiați această celulă " în Celula B4 în Set de date este acum copiată în fișierul CopyRange foaie în Celula B2 .

Citește mai mult: Excel VBA pentru a copia doar valorile la destinație (Macro, UDF și UserForm)

4. Lipiți datele copiate de pe o foaie de lucru pe alta cu metoda PasteSpecial în Macro Excel

Puteți copiați datele dintr-o foaie de calcul și le lipiți pe acelea în diferite moduri cu ajutorul Excel PasteSpecial metoda cu VBA Pașii pentru a face acest lucru sunt indicați mai jos.

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pasta în fereastra de cod.
 Sub CopyPasteSpecial() Worksheets("Dataset").Range("B2:F9").Copy Worksheets("PasteSpecial").Range("B2").PasteSpecial End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați această bucată de cod.

Uitați-vă la imaginea de mai sus. Datele din Set de date este acum transferată în PasteSpecial foaie în Excel.

Citește mai mult: VBA Paste Special pentru a copia valori și formate în Excel (9 exemple)

5. Macro pentru a copia și lipi datele de sub ultima celulă dintr-o foaie de lucru în alta în Excel

Avem deja câteva date în Set de date (prezentată în secțiunea de introducere). Acum, priviți partea următoare a acestei secțiuni. Avem acum date noi într-o altă foaie numită Ultima celulă .

Ceea ce vrem să facem aici este că, vom date specifice de copiere (celulele B5 - F9) de la Set de date foaie și pastă cele din sub ultima celulă din acest Ultima celulă foaie.

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • În al doilea rând, copiați următorul cod și pasta în fereastra de cod.
 Sub CopyPasteBelowTheLastCell() 'Setați variabilele Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim iSourceLastRow As Long Dim iTargetLastRow As Long 'Setați variabilele pentru foile sursă și destinație Set wsSource = Worksheets("Dataset") Set wsTarget = Worksheets("Last Cell") 'Găsiți ultimul rând utilizat în foaia sursă pe baza datelor din coloana B iSourceLastRow = wsSource.Cells(wsSource.Rows.Count,"B").End(xlUp).Row 'Găsiți primul rând gol din foaia de destinație pe baza datelor din coloana B 'Proprietatea Offset este pentru a muta datele copiate 1 rând în jos iTargetLastRow = wsTarget.Cells(wsTarget.Rows.Count, "B").End(xlUp).Offset(1).Row 'Copiați datele din sursă și lipiți-le în destinație wsSource.Range("B5:F9" & iSourceLastRow).Copy wsTarget.Range("B" & iTargetLastRow) End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați Acest cod. Priviți imaginea de mai jos.

În acest caz, numai date selectate din Set de date foaie este acum copiat sub ultima celulă din Ultima celulă foaie în Excel.

Citește mai mult: Formula de copiere și lipire a valorilor în Excel (5 exemple)

6. Macro VBA pentru a șterge mai întâi foaia de lucru, apoi a copia și a lipi pe o altă foaie de lucru

Ce se întâmplă dacă aveți date greșite în foaia existentă și doriți să extrageți datele originale de acolo.

Priviți următoarea imagine. șterge datele din Gama clară și stocați aici datele din fișa Set de date foaie cu VBA cod.

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • În al doilea rând, copiați următorul cod și pastă în fereastra de cod.
 Sub ClearAndCopyPasteData() 'Setați variabilele Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim iSourceLastRow As Long Dim iTargetLastRow As Long 'Setați variabilele pentru foile sursă și destinație Set wsSource = Worksheets("Dataset") Set wsTarget = Worksheets("Clear Range") 'Găsiți ultimul rând utilizat în foaia sursă pe baza datelor din coloana B iSourceLastRow = wsSource.Cells(wsSource.Rows.Count,"B").End(xlUp).Row 'Găsiți primul rând gol din foaia de destinație pe baza datelor din coloana B 'Proprietatea Offset este pentru a muta datele copiate 1 rând în jos iTargetLastRow = wsTarget.Cells(wsTarget.Rows.Count, "B").End(xlUp).Offset(1).Row 'Ștergeți datele din intervalul de destinație wsTarget.Range("B5:F9" & iTargetLastRow).ClearContents 'Copiați datele din sursă și lipiți-le în destinațiewsSource.Range("B5:F9" & iSourceLastRow).Copy wsTarget.Range("B5") End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați Uitați-vă la următoarea imagine.

Datele anterioare din Gama clară este acum înlocuită cu datele din fișa Set de date foaie.

Citește mai mult: Macro pentru a copia date dintr-un registru de lucru în altul pe baza unor criterii

7. Macro pentru copierea și lipirea datelor de pe o foaie de lucru pe alta cu funcția Range.Copy

Acum, vom învăța VBA codul privind modul de copierea și lipirea datelor dintr-o foaie de calcul în alta cu Range.Copy din Excel.

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • În al doilea rând, copiați următorul cod și pasta în fereastra de cod.
 Sub CopyWithRangeCopyFunction() 'Setați variabilele Dim wsSource As Worksheet Dim wsTarget As Worksheet 'Setați variabilele pentru foile sursă și destinație Set wsSource = Worksheets("Dataset") Set wsTarget = Worksheets("Copy Range") 'Copiați datele din sursă și lipiți-le în destinație Apel wsSource.Range("B2:F9").Copy(wsTarget.Range("B2"))) End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați această bucată de cod și priviți următoarea imagine.

Am duplicat cu succes datele din Set de date foaia din Copiere interval foaie cu Range.Copy funcție.

Citește mai mult: Excel Formula pentru a copia valoarea celulei în altă celulă

Lecturi similare

  • Excel VBA pentru a copia rândurile într-o altă foaie de lucru în funcție de criterii
  • Utilizați VBA pentru a lipi numai valori fără formatare în Excel
  • Cum să copiați și să lipiți numai celule vizibile în Excel (3 moduri simple)
  • Copierea și lipirea nu funcționează în Excel (9 motive și soluții)
  • Cum să copiați mai multe rânduri în Excel utilizând macro (4 exemple)

8. Implementați codul macro pentru a duplica datele dintr-o foaie de lucru în alta cu proprietatea USEDRANGE

De data aceasta, vom învăța VBA codul privind modul de copierea și lipirea datelor dintr-o foaie de calcul în alta cu FolositRange în Excel.

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pastă în fereastra de cod.
 Sub CopyWithUsedRange() 'Setați variabilele Dim wsSource As Worksheet Dim wsTarget As Worksheet 'Setați variabilele pentru foile sursă și destinație Set wsSource = Worksheets("Dataset") Set wsTarget = Worksheets("UsedRange") 'Copiați datele din sursă și lipiți-le în destinație Apel wsSource.UsedRange.Copy(wsTarget.Cells(2, 2))) End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați această bucată de cod.

După cum se poate vedea în imaginea de mai sus, am copiat și lipit cu succes datele de la Set de date foaia din FolositRange foaie cu USEDRANGE proprietate.

Citește mai mult: Cum să copiați aceeași valoare în mai multe celule din Excel (4 metode)

9. Macro VBA pentru a copia și lipi datele selectate de pe o foaie pe alta în Excel

Puteți copierea și lipirea doar a unor date selectate dintr-o foaie de calcul în alta cu VBA Pașii pentru a face acest lucru sunt prezentați mai jos.

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pasta în fereastra de cod.
 Sub CopyPastePasteSelectedData() 'Setați variabilele Dim wsSource As Worksheet Dim wsTarget As Worksheet 'Setați variabilele pentru foile sursă și destinație Set wsSource = Worksheets("Dataset") Set wsTarget = Worksheets("Paste Selected") 'Copiați datele din sursă wsSource.Range("B4:F7").Copy 'Lipiți datele în foaia de destinație Call wsTarget.Range("B2").PasteSpecial(Paste:=xlPasteValues) End Sub 

Codul dumneavoastră este acum gata de a fi executat.

Acest cod va copiați numai intervalul de la B4 la F7 de la Set de date foaie și lipiți cele din B2 Gama în PasteSelectat foaia nominală .

  • Următorul, Rulați acest cod.

În cele din urmă, doar datele selectate din Set de date sunt copiate și lipite cu succes în Lipiți selectat foaie în registrul de lucru Excel.

Citește mai mult: Cum să aplicați VBA PasteSpecial și să păstrați formatarea sursei în Excel

10. Cod macro pentru a duplica datele dintr-o foaie de calcul în alta la primul rând gol

Aici, vom vedea cum să copie date de la Set de date foaie și pasta cele din prima celulă goală din altă foaie de calcul în Excel cu VBA .

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pastă în fereastra de cod.
 Sub FirstBlankCell() Range("B2:F9", Range("B" & Rows.Count).End(xlUp)).Copy Sheet13.Range("A65536").End(xlUp) End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați această bucată de cod.

Vedeți în imaginea de mai sus. Foaie13 Ca urmare, codul executat a lipit datele copiate de la Set de date foaie în foarte prima celulă în Foaie13 foaie în Excel.

Citește mai mult: Copierea și lipirea valorilor în următorul rând gol cu Excel VBA (3 exemple)

11. Încorporați VBA pentru a copia și lipi datele filtrate automat de pe o foaie Excel pe alta

Noi putem filtrați setul de date sursă și copiați și lipiți numai datele filtrate într-o altă foaie de calcul în Excel. Urmăriți acest articol pentru a afla cum să faceți acest lucru pas cu pas cu VBA .

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pastă în fereastra de cod.
 Option Explicit Sub AutoFilter() Range("B4:B101").AutoFilter 1, "Dean" Range("B4:F9").Copy Sheet17.Range("B" & Rows.Count).End(xlUp)(2) Range("B4").AutoFilter End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați Numai rândul care are " Dean " din ea, va fi filtrată și copiată într-o altă foaie.

Observați în imaginea de mai sus: doar datele filtrate " Dean " din Coloana B este acum copiat și lipit în Foaie15 foaie.

Citește mai mult: Cum să copiați și să lipiți în Excel utilizând VBA (7 metode)

Lecturi similare

  • Cum se filtrează și se copiază rândurile vizibile cu Excel VBA
  • Copierea valorilor unice într-o altă foaie de lucru în Excel (5 metode)
  • Cum se copiază celulele îmbinate și filtrate în Excel (4 metode)
  • Eroare de timp de execuție 1004: Metoda PasteSpecial a clasei Range a eșuat
  • Cum să lipiți legătura și să transpuneți în Excel (8 moduri rapide)

12. Lipiți un rând în partea de jos a unui interval, păstrând formula copiată din intervalul de mai sus

Când doriți să copiați o valoare și păstrați formula în interiorul ei în timp ce îl lipiți în alt rând, apoi cu VBA cod puteți executa sarcina cu ușurință.

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pastă în fereastra de cod.
 Sub PasteRowWithFormulaFromAbove() Rows(Range("B" & Rows.Count).End(xlUp).Row).Copy Rows(Range("B" & Rows.Count).End(xlUp).Row + 1).Insert xlDown End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați acest cod și priviți imaginea de mai jos.

The ultimul rând este copiat exact așa cum este în rândul alăturat.

Citește mai mult: Cum să copiați automat datele dintr-o celulă în alta în Excel

13. VBA pentru replicarea datelor dintr-o foaie în altă foaie dintr-un alt registru de lucru deschis, dar nesalvat

Observați numele registrului nostru de lucru de exemplu, Caietul de lucru sursă Vom copia datele din Set de date din acest registru de lucru și o lipiți într-o altă foaie de lucru din alt registru de lucru numit Caietul de lucru Destinație care este deschis, dar nu a fost încă salvat .

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pastă în fereastra de cod.
 Sub CopyOneFromAnotherNotSaved() Workbooks("Source Workbook").Worksheets("Dataset").Range("B2:F9").Copy Workbooks("Destination Workbook").Worksheets("Sheet1").Range("B2") End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați acest cod.

Datele din Set de date foaia din Caietul de lucru sursă este acum copiat în fișierul Foaie1 foaia din Caietul de lucru Destinație .

Citește mai mult: Excel VBA: Copierea valorii celulei și lipirea în altă celulă

14. Macro pentru reproducerea datelor dintr-o foaie în altă foaie dintr-un alt registru de lucru deschis și salvat

De data aceasta, vom copiați datele de la Set de date foaie de la Caietul de lucru sursă și pastă în Foaie2 în fișa de lucru din Caietul de lucru Destinație . dar acum, în registrul de lucru este deschis și salvat .

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pasta în fereastra de cod.
 Sub CopyOneFromAnotherSaved() Workbooks("Source Workbook.xlsm").Worksheets("Dataset").Range("B2:F9").Copy _ Workbooks("Destination Workbook.xlsx").Worksheets("Sheet2").Range("B2") End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați acest cod.

Datele din Set de date foaia din Caietul de lucru sursă este acum copiat în fișierul Foaie2 foaia din Caietul de lucru Destinație . și uitați-vă la nume, acest registrul de lucru a fost salvat de data aceasta.

Citește mai mult: Cum să copiați și să lipiți în Excel fără a schimba formatul

15. Aplicați VBA pentru a copia și lipi date dintr-o foaie de lucru într-o altă foaie de lucru dintr-un alt registru de lucru închis

În cele două secțiuni anterioare, am învățat cum să copiem și să lipim date de pe o foaie de lucru pe alta dintr-un alt registru de lucru deschis. În această secțiune, vom învăța codul pentru cum să copierea și lipirea datelor atunci când registrul de lucru este închis .

Pași:

  • În primul rând, deschideți Editor Visual Basic de la Dezvoltator fila și Introduceți a Modul în fereastra de cod.
  • Al doilea, copiați următorul cod și pasta în fereastra de cod.
 Sub CopyOneFromAnotherClosed() 'Pentru a deschide registrul de lucru salvat pe sistemul dvs. 'modificați calea de mai jos în funcție de locația fișierului dvs. în sistem Workbooks.Open "D:\ExcelWIKI\Excel Folder\Destination Workbook.xlsx" 'Copiază datele din registrul de lucru numit Source Workbook și 'le lipește în registrul de lucru țintă numit Destination Workbook Workbooks("SourceWorkbook").Worksheets("Dataset").Range("B2:F9").Copy Workbooks("Destination Workbook").Worksheets("Sheet3").Range("B2") 'Închideți registrul de lucru țintă după salvare Workbooks("Destination Workbook").Close SaveChanges:=True End Sub 

Codul dumneavoastră este acum gata de a fi executat.

  • Următorul, Rulați acest cod.

Chiar dacă, de data aceasta, registrul de lucru a fost închis, dar totuși, după executarea codului, datele din registrul de lucru Set de date foaia din Caietul de lucru sursă este acum copiat în fișierul Foaie3 foaia din Caietul de lucru Destinație .

Citește mai mult: Excel VBA pentru a copia datele dintr-un alt registru de lucru fără a deschide

Lucruri de reținut

  • Metodele de la 1 la 14 necesită ca registrele de lucru să fie deschise Atunci când executați codurile macro prezentate în aceste metode, nu uitați să țineți deschise atât registrul de lucru sursă, cât și cel de destinație.
  • În timp ce sunt salvate registrele de lucru, apoi scrieți numele fișierului cu tipul de fișier în interiorul codului. Atunci când registrele de lucru nu sunt salvate, atunci scrieți doar numele fișierului fără tipul de fișier. De exemplu, dacă fișierul dvs. se salvează registrul de lucru , apoi scrie " Destinație. xlsx ", dar dacă registrul de lucru nu este salvat , apoi scrie " Destinație " în interiorul codului.

Concluzie

Acest articol v-a arătat cum să copierea și lipirea datelor dintr-o foaie de calcul în alta în Excel cu VBA . sper că acest articol a fost foarte benefic pentru dvs. Nu ezitați să mă întrebați dacă aveți întrebări legate de acest subiect.

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.