Excel VBA Kopiera intervall till ett annat ark (8 enklaste sätt)

  • Dela Detta
Hugh West

Närhelst du behöver kan du kopiera ett intervall från ett ark till ett annat ark eller en annan arbetsbok. Det finns olika typer av kopiering och klistring. I den här artikeln får du lära dig olika sätt att använda Excel VBA för att kopiera intervall till ett annat ark.

För att göra förklaringen levande kommer jag att använda ett exempel på ett dataset som representerar personuppgifter för vissa personer. Datasetetet har fyra kolumner. Kolumnerna är följande Förnamn, efternamn, fullständigt namn, och E-post .

Ladda ner arbetsbok för att öva

VBA Kopiera intervall till ett annat ark.xlsm

8 sätt att med Excel VBA kopiera ett område till ett annat ark

1. Kopiera ett intervall till ett annat ark med format

Närhelst du vill Kopiera en sträcka från ett blad till ett annat blad med Format kan du helt enkelt göra det genom att använda VBA .

Här ska jag Kopiera ett intervall från Dataset ark till WithFormat ark.

Låt oss börja förfarandet,

Öppna först Utvecklare flik>> välj Visual Basic

Du kan också använda ALT + F11 tangentbordet för att öppna VBA redaktör.

Därefter öppnas ett nytt fönster med namnet Microsoft Visual Basic för tillämpningar.

Där öppnar du Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade Modul .

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

Här förklarade jag Underförfarande Kopiera_område_med_format_till_ett_annat_blad

Jag har tagit en rad B1:E10 för att kopiera från det befintliga bladet till bladnamnet WithFormat .

Här använde jag Kopiera för att kopiera det valda intervallet, Kopiera metoden kopierar alla intervall med Format .

Slutligen, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Kopiera_område_med_format_till_ett_annat_blad också välja arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Den kommer därför att Kopiera det valda intervallet med Format till det nya bladet som jag har valt ( WithFormat) .

2. VBA Kopiera ett område till ett annat ark utan format

Det är också möjligt att Kopiera ett område till ett annat ark utan att Format genom att använda VBA .

Här ska jag Kopiera ett intervall från Dataset ark till WithoutFormat ark.

Låt oss börja förfarandet,

Öppna nu Utvecklare flik>> välj Visual Basic ( använda ALT + F11)

Därefter öppnas Microsoft Visual Basic för tillämpningar.

Öppna sedan Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade 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 

Här förklarade jag Underförfarande Kopiera_intervall_utanformat_till ett annat ark

Jag har tagit en rad B1:E10 för att kopiera från det befintliga bladet till bladnamnet WithoutFormat .

Här använde jag Kopiera metoden för att kopiera det valda intervallet, men nämnde också Klistra in:=xlPasteValues i den Klistra inSpecial så att den endast klistrar in Värden för det valda intervallet, inte formatet.

Slutligen, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Kopiera_intervall_utanformat_till ett annat ark och välj även arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Den kommer således att Kopiera det valda intervallet endast med Värden ingen Format .

3. Kopiera ett intervall till ett annat ark med format och kolumnbredd

Ibland vill du kanske Kopiera ett valfritt område som det är, för att du ska kunna Kopiera en serie med Format och Bredd på kolumnen .

Här ska jag Kopiera ett intervall från Dataset ark till Format & kolumnbredd ark.

Om du vill se hur du utför uppgiften med hjälp av VBA ,

Öppna först Utvecklare flik>> välj Visual Basic

Du kan också använda ALT + F11 tangentbordet för att öppna VBA redaktör.

Därefter öppnas ett nytt fönster med Microsoft Visual Basic för tillämpningar.

Där, öppna Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade 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 

Här deklarerade jag Underförfarande Kopiera_område_till_ett_annat_blad_med_formatoch_kolumnbredd

Jag har tagit en rad B1:E10 för att kopiera från det befintliga bladet till destinationsbladet. Format & kolumnbredd .

Här använde jag Kopiera metoden för att kopiera det markerade området. Jag använde också metoden Klistra inSpecial metod där jag nämnde Klistra in:=xlPasteColumnWidths så att det markerade intervallet klistras in tillsammans med Format och Bredd på kolumnen .

Slutligen, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Kopiera_område_till_ett_annat_blad_med_formatoch_kolumnbredd och välj även arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Detta innebär att den kommer att Kopiera det valda intervallet med Format och Bredd på kolumnen .

4. VBA Kopiera ett intervall till ett annat ark med en formel

Om du har någon formel i ditt dataset som du vill kopiera kan du kopiera intervallet som innehåller Formel till ett annat ark och behåller formeln intakt.

Här ska jag Kopiera ett intervall från Dataset ark till MedFormula ark

Låt oss börja förfarandet,

Till att börja med öppnar du Utvecklare flik>> välj Visual Basic ( kan du också använda ALT + F11 tangentbord)

Därefter öppnas Microsoft Visual Basic för tillämpningar.

Där öppnar du Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade 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 

Här förklarade jag Underförfarande Kopiera_område_med_formel_till_ett_annat_blad

Jag har tagit en rad B1:E10 för att kopiera från det befintliga bladet till destinationsbladet. MedFormula .

Här använde jag Kopiera metoden för att kopiera det markerade området. Jag använde också metoden Klistra inSpecial metod där jag nämnde Klistra in:=xlPasteFormulas så att den bär den Formler tillsammans med det valda intervallet.

Slutligen, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Kopiera_område_med_formel_till_ett_annat_blad också välja arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Den kommer således att Kopiera alla markerade cellområden med Formler .

Liknande läsningar:

  • Hur du använder VBA Range Offset (11 sätt)
  • VBA för varje cell i intervallet i Excel (3 metoder)
  • Hur man använder Range Object i VBA i Excel (5 egenskaper)

5. Kopiera ett intervall med AutoFit till ett annat ark

Medan Kopiering av ett område till ett annat ark kan du också använda AutoFit metoden i VBA till AutoFit det kopierade området i det nya arket.

Här ska jag Kopiera ett intervall från Dataset ark till AutoFit ark

Låt oss börja förfarandet,

Öppna först Utvecklare flik>> välj Visual Basic

Du kan också använda ALT + F11 tangentbordet för att öppna VBA redaktör.

Därefter öppnas ett fönster med Microsoft Visual Basic för tillämpningar.

Öppna sedan Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade 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 

Här förklarade jag Underförfarande Copy_Range_withFormat_AutoFit

Först valde jag arbetsbladet Dataset . Sedan har du tagit intervallet B1:E10 för att kopiera från det befintliga arket till det målark som heter AutoFit .

Här använde jag Kopiera för att kopiera det valda intervallet och AutoFit metoden kommer att autofitera de angivna kolumnerna B:E .

Slutligen, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Copy_Range_withFormat_AutoFit också välja arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Den kommer därför att Kopiera det valda intervallet till ett nytt ark och även AutoFit kolumnerna.

6. VBA Kopiera ett intervall till en annan arbetsbok

Om du vill kan du också Kopiera ett intervall från ett ark till ett annat ark i en annan arbetsbok.

Här ska jag Kopiera ett intervall från Dataset ark till Blad 1 Bok1 arbetsbok.

Låt oss börja förfarandet,

Öppna först Utvecklare flik>> välj Visual Basic (y Du kan också använda ALT + F11 tangentbord)

Därefter öppnas Microsoft Visual Basic för tillämpningar.

Öppna sedan Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade Modul .

 Sub Copy_Range_WithFormat_Toanother_WorkBook() Arbetsböcker("Excel VBA Copy Range to Another Sheet.xlsm").Arbetsblad("Dataset").Range("B3:E10"). _ Copy Arbetsböcker("Book1").Arbetsblad("Sheet1").Range("B3") End Sub 

Här deklarerade jag Underförfarande Kopiera_område_med_format_till_en_annan_arbetsbok

Jag har tagit med mig sortimentet B3:E10 från bladets namn Dataset för att kopiera från det befintliga bladet till det nya arbetsboksnamnet Bok1 och namn på bladet Blad 1 .

Här använde jag Kopiera för att kopiera det valda intervallet till den nya arbetsboken.

Slutligen, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Kopiera_område_med_format_till_en_annan_arbetsbok också välja arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Nu kommer den att Kopiera det valda intervallet från Dataset ark till en annan arbetsbok.

7. Kopiera ett intervall till den sista raden på ett annat ark

Om du i alla fall vill Kopiera ett intervall till ett annat ark från en viss cell eller den sista cellen kan du göra det med hjälp av VBA .

Innan jag går in i förfarandet vill jag berätta att jag har tagit två nya blad som består av följande Fullständigt namn, e-post, och Adress .

Låt oss observera följande Dataset2 bladet först.

Här är Under sista cellen ark.

Här ska jag Kopiera ett intervall från Dataset2 ark till Under sista cellen utan från den första icke-tomma cellen.

Till att börja med öppnar du Utvecklare flik>> välj Visual Basic

Därefter öppnas Microsoft Visual Basic för tillämpningar.

Öppna sedan Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade 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 EndUnder 

Här deklarerade jag Underförfarande Kopiera_Range_BelowLastCell_AnotherSheets

Först valde jag bladet Dataset2 och använde sedan Rad metoden för att räkna antalet Sista raden och behöll den räknade raden i lr .

Därefter tas intervallet A2:C & lr för att kopiera från det befintliga bladet till destinationsbladet. Under sista cellen .

Återigen använde du Rad metoden för att räkna antalet Sista raden på ett annat blad som heter Under sista cellen och behöll den räknade raden i lrAnotherSheet .

Här använde jag Kopiera för att kopiera det valda intervallet och AutoFit metoden kommer att autofitera de angivna kolumnerna A:C .

Slutligen, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Kopiera_Range_BelowLastCell_AnotherSheets också välja arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Den kommer därför att Kopiera det valda intervallet och kommer att Klistra in från den sista raden på ett annat ark.

8. VBA Kopiera ett intervall till den sista raden i en annan arbetsbok

Om du vill Kopiera ett intervall till den sista raden i ett annat arbetsboksblad kan du också använda VBA .

Här ska jag Kopiera ett intervall från Dataset2 ark till Blad 1 Bok2 utan från den första icke-tomma cellen.

För att starta proceduren,

Öppna först Utvecklare flik>> välj Visual Basic

Du kan också använda ALT + F11 tangentbordet för att öppna VBA redaktör.

Därefter öppnas ett nytt fönster med Microsoft Visual Basic för tillämpningar.

Där öppnar du Infoga >> välj Modul .

A Modul öppnas och skriv sedan följande kod i den öppnade 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 

Här deklarerade jag Underförfarande Kopiera_Range_BelowBelowLastCell_To_Another_Workbook där wsCopy och wsDestination är Arbetsblad typ, lCopyLastRow och lDestLastRow är Lång typ.

Först användes Ställ in för att ställa in variabler för det ark som ska kopieras och för målarket.

Därefter använde du Rad metoden för att hitta den sista raden utifrån kolumnens data A i kopieringsområdet.

Återigen använde du Rad Metod för att hitta den första tomma raden baserat på data i kolumnen. A i destinationsområdet används också Offset för att flytta ner en fastighet.

Slutligen, Kopierad uppgifter om Dataset2 bladet från den Excel VBA Kopiera intervall till ett annat ark.xlsm arbetsbok till destinationen Blad 1 av arbetsboken Bok2.xlsx .

Nu, Spara koden och gå tillbaka till arbetsbladet.

Öppna sedan Visa flik>> från Makroer >> välj Visa makron

➤ A dialogruta kommer att dyka upp.

Från och med nu, från Makronamn välja den Kopiera_Range_BelowBelowLastCell_To_Another_Workbook också välja arbetsboken inom Makroer i .

Slutligen, Kör den valda Makro .

Den kommer därför att Kopiera det valda intervallet från det befintliga arket till den sista raden i en annan arbetsbok.

Övningssektionen

Jag har gett dig ett övningsblad i arbetsboken för att öva på dessa förklarade sätt att använda Excel. VBA kopiera intervallet till ett annat ark.

Slutsats

I den här artikeln har jag förklarat 8 olika typer av enkla och snabba sätt att använda Excel. VBA kopiera intervall till ett annat ark. Dessa olika sätt hjälper dig att kopiera ett intervall från ett ark till ett annat och även från ett ark till en annan arbetsbok. Sist men inte minst, om du har några förslag, idéer eller feedback är du välkommen att kommentera nedan.

Hugh West är en mycket erfaren Excel-tränare och analytiker med över 10 års erfarenhet i branschen. Han har en kandidatexamen i redovisning och ekonomi och en magisterexamen i företagsekonomi. Hugh har en passion för undervisning och har utvecklat ett unikt undervisningssätt som är lätt att följa och förstå. Hans expertkunskap om Excel har hjälpt tusentals studenter och yrkesverksamma över hela världen att förbättra sina färdigheter och utmärka sig i sina karriärer. Genom sin blogg delar Hugh med sig av sin kunskap med världen, och erbjuder gratis Excel-handledning och onlineutbildning för att hjälpa individer och företag att nå sin fulla potential.