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

  • Поделись Этим
Hugh West

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

Чтобы сделать объяснение более живым, я собираюсь использовать пример набора данных, который представляет личную информацию конкретных людей. Набор данных имеет 4 столбца. Эти столбцы - это Имя, Фамилия, Полное имя, и Электронная почта .

Скачать рабочую тетрадь для практики

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

8 способов копирования диапазона в Excel VBA на другой лист

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

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

Вот, я Копировать диапазон от Набор данных лист на WithFormat лист.

Давайте начнем процедуру,

Сначала откройте Разработчик вкладка>> выбрать Visual Basic

Вы также можете использовать ALT + F11 клавиатуры, чтобы открыть VBA редактор.

Далее откроется новое окно с именем Microsoft Visual Basic for Applications.

Оттуда откройте Вставка >> выбрать Модуль .

A Модуль откроется, затем введите следующий код в открывшемся окне Модуль .

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

Здесь я объявил Подпроцедура Копировать_диапазон_с_форматом_на_другой_лист

Я взял диапазон B1:E10 для копирования с существующего листа на имя листа WithFormat .

Здесь я использовал Копировать метод для копирования выбранного диапазона, Копировать метод копирует любой диапазон с Формат .

Наконец-то, Сохранить код и вернуться к рабочему листу.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Копировать_диапазон_с_форматом_на_другой_лист также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

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

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

Также можно Копировать диапазон на другой лист без Формат с помощью VBA .

Вот, я Копировать диапазон от Набор данных лист на WithoutFormat лист.

Давайте приступим к процедуре,

Теперь откройте Разработчик вкладка>> выбрать Visual Basic ( использовать ALT + F11)

Далее откроется Microsoft Visual Basic for Applications.

Затем откройте Вставка >> выбрать Модуль .

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 

Здесь я объявил Подпроцедура Копировать_диапазон_без_формата_на_другой_лист

Я взял диапазон B1:E10 для копирования из существующего листа в имя листа WithoutFormat .

Здесь я использовал Копировать метод для копирования выбранного диапазона, но также упоминается Paste:=xlPasteValues в PasteSpecial метод, чтобы он вставлял только Значения выбранного диапазона, а не формата.

Наконец-то, Сохранить код и вернитесь на рабочий лист.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Копировать_диапазон_без_формата_на_другой_лист а также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

Таким образом, это будет Копировать выбранный диапазон только с Значения нет Формат .

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

Иногда вы можете захотеть Копировать любой выбранный диапазон, как он есть, для этого вы можете Копировать диапазон с Формат и Ширина колонки .

Вот, я Копировать диапазон от Набор данных лист на Формат и ширина столбцов лист.

Чтобы увидеть процедуру выполнения задания с помощью VBA ,

Сначала откройте Разработчик вкладка>> выбрать Visual Basic

Вы также можете использовать ALT + F11 клавиатуры, чтобы открыть VBA редактор.

Далее откроется новое окно Microsoft Visual Basic for Applications.

Вот, откройте Вставка >> выбрать Модуль .

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 

Здесь я объявил Подпроцедура Копировать_диапазон_на_другой_лист_с_форматом_и_шириной_колонки

Я взял диапазон B1:E10 для копирования с существующего листа на имя листа назначения Формат и ширина столбцов .

Здесь я использовал Копировать для копирования выбранного диапазона. Я также использовал метод PasteSpecial метод, где я упомянул Paste:=xlPasteColumnWidths чтобы вставить выбранный диапазон вместе с Формат и Ширина колонки .

Наконец-то, Сохранить код и вернуться к рабочему листу.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Копировать_диапазон_на_другой_лист_с_форматом_и_шириной_колонки а также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

В результате этого Копировать выбранный диапазон с Формат и Ширина колонки .

4. VBA Копирование диапазона на другой лист с помощью формулы

Если у вас есть какая-либо формула в наборе данных, которую вы хотите скопировать, не беспокойтесь! Вы можете скопировать диапазон, содержащий Формула на другой лист, сохраняя формулу в неизменном виде.

Вот, я Копировать диапазон от Набор данных лист на WithFormula лист

Давайте начнем процедуру,

Для начала откройте Разработчик вкладка>> выбрать Visual Basic ( вы также можете использовать ALT + F11 клавиатура)

Далее откроется Microsoft Visual Basic for Applications.

Оттуда откройте Вставка >> выбрать Модуль .

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 

Здесь я объявил Подпроцедура Копировать_диапазон_с_формулой_на_другой_лист

Я взял диапазон B1:E10 для копирования с существующего листа на имя листа назначения WithFormula .

Здесь я использовал Копировать для копирования выбранного диапазона. Я также использовал метод PasteSpecial метод, где я упомянул Вставить:=xlPasteFormulas так, чтобы она несла Формулы вместе с выбранным диапазоном.

Наконец-то, Сохранить код и вернуться к рабочему листу.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Копировать_диапазон_с_формулой_на_другой_лист также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

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

Похожие чтения:

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

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

В то время как Копирование диапазон на другой лист, вы также можете использовать AutoFit метод в VBA на AutoFit скопированный диапазон на новом листе.

Вот, я Копировать диапазон от Набор данных лист на AutoFit лист

Давайте начнем процедуру,

Сначала откройте Разработчик вкладка>> выбрать Visual Basic

Вы также можете использовать ALT + F11 клавиатуру, чтобы открыть VBA редактор.

Далее откроется окно Microsoft Visual Basic for Applications.

Затем откройте Вставка >> выбрать Модуль .

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 .

Наконец-то, Сохранить код и вернуться к рабочему листу.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Copy_Range_withFormat_AutoFit также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

Следовательно, это будет Копировать выбранный диапазон на новый лист, а также AutoFit колонны.

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

Если вы хотите, вы также можете Копировать диапазон с одного листа на другой лист другой рабочей книги.

Вот, я Копировать диапазон от Набор данных лист на Лист1 из Книга1 рабочая тетрадь.

Давайте начнем процедуру,

Сначала откройте Разработчик вкладка>> выбрать Visual Basic (y вы также можете использовать ALT + F11 клавиатура)

Затем откроется Microsoft Visual Basic for Applications.

Затем откройте Вставка >> выбрать Модуль .

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 

Здесь я объявил Подпроцедура Копировать_диапазон_с_форматом_в_другую_рабочую_книгу

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

Здесь я использовал Копировать метод для копирования выбранного диапазона в новую рабочую книгу.

Наконец-то, Сохранить код и вернуться к рабочему листу.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Копировать_диапазон_с_форматом_в_другую_рабочую_книгу также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

Теперь это будет Копировать выбранный диапазон из Набор данных лист в другую рабочую книгу.

7. Копирование диапазона в последнюю строку другого листа

В любом случае, если вы хотите Копировать диапазон на другой лист из определенной ячейки или последней ячейки, вы можете сделать это с помощью функции VBA .

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

Давайте понаблюдаем за Набор данных2 сначала лист.

Вот Ниже последней ячейки лист.

Вот, я Копировать диапазон от Набор данных2 лист на Ниже последней ячейки но с первой незаполненной ячейки.

Для начала откройте Разработчик вкладка>> выбрать Visual Basic

Далее откроется Microsoft Visual Basic for Applications.

Затем откройте Вставка >> выбрать Модуль .

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 EndSub 

Здесь я объявил Подпроцедура Copy_Range_BelowLastCell_AnotherSheets

Сначала я выбрал лист Набор данных2 и затем использовал Строка метод для подсчета Последний ряд и сохранил подсчитанный ряд в lr .

Затем взяли диапазон A2:C & lr для копирования с существующего листа на имя листа назначения Ниже последней ячейки .

Опять же, использовал Строка метод для подсчета Последний ряд другого листа с именем Ниже последней ячейки и сохранил подсчитанный ряд в lrAnotherSheet .

Здесь я использовал Копировать метод для копирования выбранного диапазона и AutoFit метод будет автоподгонять заданные столбцы A:C .

Наконец-то, Сохранить код и вернуться к рабочему листу.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Copy_Range_BelowLastCell_AnotherSheets также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

Следовательно, это будет Копировать выбранный диапазон и будет Паста его из последней строки другого листа.

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

Если вы хотите Копировать диапазон в последнюю строку другого листа рабочей книги, вы также можете использовать функцию VBA .

Вот, я Копировать диапазон от Набор данных2 лист на Лист1 из Книга2 но с первой незаполненной ячейки.

Чтобы начать процедуру,

Сначала откройте Разработчик вкладка>> выбрать Visual Basic

Вы также можете использовать ALT + F11 клавиатуры, чтобы открыть VBA редактор.

Далее откроется новое окно Microsoft Visual Basic for Applications.

Оттуда откройте Вставка >> выбрать Модуль .

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 

Здесь я объявил Подпроцедура Копировать_диапазон_ниже_последней_ячейки_в_другую_рабочую_книгу где wsCopy и wsDestination являются Рабочий лист тип, lCopyLastRow и lDestLastRow являются Длинный тип.

Во-первых, использовали Установите чтобы задать переменные для листа для копирования и листа назначения.

Далее, использовали Строка метод для поиска последней строки на основе данных столбца A в диапазоне копирования.

Опять же, использовал Строка метод поиска первой пустой строки на основе данных столбца A в диапазоне назначения также используется Смещение переехать на одну недвижимость.

Наконец-то, Скопировано данные о Набор данных2 лист из Excel VBA Копирование диапазона на другой лист.xlsm рабочую книгу в место назначения Лист1 трудовая книжка Book2.xlsx .

Сейчас, Сохранить код и вернуться к рабочему листу.

Затем откройте Посмотреть вкладка>> от Макросы >> выбрать Просмотр макросов

➤ A диалоговое окно появится.

Теперь из Имя макроса выбрать Копировать_диапазон_ниже_последней_ячейки_в_другую_рабочую_книгу также выберите рабочую книгу внутри Макросы в .

Наконец-то, Запускайте выбранный Макро .

Следовательно, это будет Копировать выбранный диапазон из существующего листа в последнюю строку другой рабочей книги.

Практическая секция

Я предоставил в рабочей тетради лист для отработки этих объясненных способов работы с Excel VBA копирование диапазона на другой лист.

Заключение

В этой статье я рассказал о 8 различных типах простых и быстрых способов Excel VBA копировать диапазон на другой лист. Эти различные способы помогут вам скопировать диапазон с одного листа на другой, а также с одного листа в другую рабочую книгу. И последнее, но не менее важное: если у вас есть какие-либо предложения, идеи и отзывы, пожалуйста, не стесняйтесь оставлять комментарии ниже.

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.