Excel VBA Копиране на обхват в друг лист (8 най-лесни начина)

  • Споделя Това
Hugh West

Когато имате нужда, можете да копирате диапазон от един лист в друг лист или работна книга. Има различни видове копиране и поставяне. След тази статия ще се запознаете с различни начини за използване на Excel VBA за копиране на диапазон в друг лист.

За да направя обяснението по-живо, ще използвам примерен набор от данни, който представя личната информация на определени лица. Наборът от данни има 4 колони. Тези колони са Име, Фамилия, Пълно име, и Имейл .

Изтегляне Работна тетрадка за практика

VBA Копиране на обхват в друг лист.xlsm

8 начина за копиране на диапазона на Excel VBA в друг лист

1. Копиране на диапазон в друг лист с формат

Когато искате да Копие обхват от един лист до друг лист с Формат можете просто да го направите, като използвате VBA .

Ето, аз ще Копие диапазон от Набор от данни лист към WithFormat лист.

Нека да започнем процедурата,

Първо отворете Разработчик tab>> изберете Visual Basic

Можете също така да използвате ALT + F11 клавиатурата, за да отворите VBA редактор.

След това ще се отвори нов прозорец с име Microsoft Visual Basic за приложения.

Оттам отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

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

Тук декларирах Подпроцедура Copy_Range_withFormat_ToAnother_Sheet

Взех обхват B1:E10 за копиране от съществуващия лист в името на листа WithFormat .

Тук използвах Копие за копиране на избрания диапазон, Копие метод копира всеки диапазон с Формат .

Накрая, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_withFormat_ToAnother_Sheet също така изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

Следователно, той ще Копие избрания диапазон с Формат към новия лист, който съм избрал ( WithFormat) .

2. VBA Копиране на диапазон в друг лист без формат

Възможно е също така да Копие обхват към друг лист, без да Формат като използвате VBA .

Ето, аз ще Копие диапазон от Набор от данни лист към WithoutFormat лист.

Нека започнем процедурата,

Сега отворете Разработчик tab>> изберете Visual Basic ( използвате ALT + F11)

След това ще се отвори Microsoft Visual Basic за приложения.

След това отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

 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 

Тук декларирах Подпроцедура Copy_Range_WithoutFormat_Toanother_Sheet

Взех обхват B1:E10 за копиране от съществуващия лист в името на листа WithoutFormat .

Тук използвах Копие метод за копиране на избрания диапазон, но също така спомена Paste:=xlPasteValues в PasteSpecial метод, така че да вмъква само Стойности на избрания диапазон, а не на формата.

Накрая, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_WithoutFormat_Toanother_Sheet и изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

По този начин той ще Копие избрания диапазон само с Стойности не Формат .

3. Копиране на диапазон в друг лист с формат и ширина на колоната

Понякога може да искате да Копие всеки избран диапазон, за което можете да Копие обхват с Формат и Ширина на колоната .

Ето, аз ще Копие диапазон от Набор от данни лист към Формат & Ширина на колоната лист.

За да видите процедурата за изпълнение на задачата с помощта на VBA ,

Първо отворете Разработчик tab>> изберете Visual Basic

Можете също така да използвате ALT + F11 клавиатурата, за да отворите VBA редактор.

След това ще се отвори нов прозорец на Microsoft Visual Basic за приложения.

Там отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

 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 

Тук декларирах Подпроцедура Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth

Взех обхват B1:E10 за копиране от съществуващия лист в името на листа на местоназначението Формат & Ширина на колоната .

Тук използвах Копие за копиране на избрания диапазон. Използвах и метода PasteSpecial метод, където споменах Paste:=xlPasteColumnWidths така че да вмъкне избрания диапазон заедно с Формат и Ширина на колоната .

Накрая, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth и изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

В резултат на това тя ще Копие избрания диапазон с Формат и Ширина на колоната .

4. VBA Копиране на обхват в друг лист с формула

В случай че имате формула в набора от данни, която искате да копирате, не се притеснявайте! Можете да копирате диапазона, съдържащ Формула на друг лист, като запазвате формулата непокътната.

Ето, аз ще Копие диапазон от Набор от данни лист към С формула лист

Нека започнем процедурата,

За начало отворете Разработчик tab>> изберете Visual Basic ( можете да използвате и ALT + F11 клавиатура)

След това ще се отвори Microsoft Visual Basic за приложения.

Оттам отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

 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 

Тук декларирах Подпроцедура Copy_Range_withFormula_ToAnother_Sheet

Взех обхват B1:E10 за копиране от съществуващия лист в името на листа на местоназначението С формула .

Тук използвах Копие за копиране на избрания диапазон. Използвах и метода PasteSpecial метод, където споменах Paste:=xlPasteFormulas така че да носи Формули заедно с избрания диапазон.

Накрая, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_withFormula_ToAnother_Sheet също така изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

По този начин той ще Копие всички избрани диапазони от клетки с Формули .

Подобни четива:

  • Как да използваме VBA Range Offset (11 начина)
  • VBA за всяка клетка в обхвата в Excel (3 метода)
  • Как да използвате обекта Range на VBA в Excel (5 свойства)

5. Копиране на диапазон с AutoFit в друг лист

Докато Копиране на обхват към друг лист, можете също така да използвате AutoFit метод в VBA към AutoFit копирания диапазон в новия лист.

Ето, аз ще Копие диапазон от Набор от данни лист към AutoFit лист

Нека започнем процедурата,

Първо отворете Разработчик tab>> изберете Visual Basic

Можете също така да използвате ALT + F11 клавиатурата, за да отворите VBA редактор.

След това ще се отвори прозорец на Microsoft Visual Basic за приложения.

След това отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

 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 

Тук декларирах Подпроцедура Copy_Range_withFormat_AutoFit

Първо, избрах работния лист Набор от данни . След това взех диапазона B1:E10 да копирате от съществуващия лист в листа на местоназначението с име AutoFit .

Тук използвах Копие за копиране на избрания диапазон и AutoFit методът автоматично настройва дадените колони B:E .

Накрая, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_withFormat_AutoFit също така изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

Следователно, той ще Копие избрания диапазон в нов лист и също така AutoFit колоните.

6. VBA Копиране на диапазон в друга работна книга

Ако искате, можете също така да Копие диапазон от един лист към друг лист от друга работна книга.

Ето, аз ще Копие диапазон от Набор от данни лист към Лист1 на Книга1 работна тетрадка.

Нека започнем процедурата,

Първо отворете Разработчик tab>> изберете Visual Basic (y а също така можете да използвате ALT + F11 клавиатура)

След това ще се отвори Microsoft Visual Basic за приложения.

След това отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

 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 

Тук декларирах Подпроцедура Copy_Range_WithFormat_Toanother_WorkBook

Взех диапазона B3:E10 от името на листа Набор от данни за копиране от съществуващия лист в името на новата работна книга Книга1 и името на листа Лист1 .

Тук използвах Копие за копиране на избрания диапазон в новата работна книга.

Накрая, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_WithFormat_Toanother_WorkBook също така изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

Сега тя ще Копие избрания обхват от Набор от данни лист в друга работна книга.

7. Копиране на обхват в последния ред на друг лист

Във всеки случай, ако искате да Копие диапазон към друг лист от определена клетка или последната клетка, можете да го направите с помощта на VBA .

Преди да пристъпим към процедурата, искам да ви кажа, че съм взел два нови листа, състоящи се от Пълно име, имейл, и Адрес .

Нека да наблюдаваме Набор от данни2 първо лист.

Тук е Под последната клетка лист.

Ето, аз ще Копие диапазон от Набор от данни2 лист към Под последната клетка но от първата клетка, която не е празна.

За начало отворете Разработчик tab>> изберете Visual Basic

След това ще се отвори Microsoft Visual Basic за приложения.

След това отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

 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 EndПод 

Тук декларирах Подпроцедура Copy_Range_BelowLastCell_AnotherSheets

Първо, избрах листа Набор от данни2 и след това използвайте Ред метод за преброяване на Последен ред и запази преброения ред в lr .

След това вземете обхвата A2:C & lr за копиране от съществуващия лист в името на листа на дестинацията Под последната клетка .

Отново използвах Ред метод за преброяване на Последен ред на друг лист с име Под последната клетка и запази преброения ред в lrAnotherSheet .

Тук използвах Копие за копиране на избрания диапазон и AutoFit методът автоматично настройва дадените колони A:C .

Накрая, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_BelowLastCell_AnotherSheets също така изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

Следователно, той ще Копие избрания диапазон и ще Паста от последния ред на друг лист.

8. VBA Копиране на диапазон в последния ред на друга работна книга

Ако искате да Копие обхват към последния ред на друг лист от работната книга, можете също така да използвате VBA .

Ето, аз ще Копие диапазон от Набор от данни2 лист към Лист1 на Книга2 но от първата клетка, която не е празна.

За да започнете процедурата,

Първо отворете Разработчик tab>> изберете Visual Basic

Можете също така да използвате ALT + F11 клавиатурата, за да отворите VBA редактор.

След това ще се отвори нов прозорец на Microsoft Visual Basic за приложения.

Оттам отворете Вмъкване на >> изберете Модул .

A Модул ще се отвори, след което въведете следния код в отвореното поле Модул .

 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 

Тук декларирах Подпроцедура Copy_Range_BelowLastCell_To_Another_Workbook където wsCopy и wsDestination са Работен лист тип, lCopyLastRow и lDestLastRow са Дълъг тип.

Първо, използвайте Задайте за задаване на променливи за листа, който ще се копира, и за листа на местоназначението.

След това използвайте Ред метод за намиране на последния ред въз основа на данните от колоната A в обхвата на копиране.

Отново използвах Ред метод за намиране на първия празен ред въз основа на данните от колоната A в обхвата на дестинацията също се използва Офсет да се преместите с един имот надолу.

Накрая, Копирано данните на Набор от данни2 лист от Excel VBA Копиране на обхват в друг лист.xlsm работна книга към дестинацията Лист1 на работната книга Book2.xlsx .

Сега, Запазете кода и се върнете в работния лист.

След това отворете Вижте tab>> от Макроси >> изберете Преглед на макроси

➤ A диалогов прозорец ще се появи.

Сега, от Име на макрос изберете Copy_Range_BelowLastCell_To_Another_Workbook също така изберете работната книга в Макроси в .

Накрая, Изпълнявайте избрания Macro .

Следователно, той ще Копие избрания диапазон от съществуващия лист до последния ред на друга работна книга.

Практически раздел

В работната книга съм предоставил лист за упражнения, за да упражните тези обяснени начини на Excel VBA копиране на диапазон в друг лист.

Заключение

В тази статия съм обяснил 8 различни вида лесни и бързи начини за работа с Excel VBA копиране на диапазон в друг лист. Тези различни начини ще ви помогнат да копирате диапазон от един лист в друг, а също и от един лист в друга работна книга. Не на последно място, ако имате някакви предложения, идеи и обратна връзка, моля, не се колебайте да коментирате по-долу.

Хю Уест е опитен обучител и анализатор на Excel с над 10 години опит в индустрията. Има бакалавърска степен по счетоводство и финанси и магистърска степен по бизнес администрация. Хю има страст към преподаването и е разработил уникален подход на преподаване, който е лесен за следване и разбиране. Неговите експертни познания по Excel са помогнали на хиляди студенти и професионалисти по целия свят да подобрят уменията си и да постигнат отлични резултати в кариерата си. Чрез своя блог Хю споделя знанията си със света, като предлага безплатни уроци за Excel и онлайн обучение, за да помогне на хората и фирмите да достигнат пълния си потенциал.