Макрос копирование данных с листа на лист в excel

Обновлено: 06.07.2024

Visual Basic для приложений (VBA) - это идеальный способ настроить Excel 2010 в соответствии с вашими потребностями. Если вы постоянно обнаруживаете, что выполняете одни и те же задачи, такие как копирование данных в Excel, вы можете заставить VBA выполнить эту задачу за вас. Вместо того, чтобы копировать данные с одного рабочего листа вручную и вставлять его в другой, напишите макрос VBA, и вы можете нажать кнопку, чтобы выполнить копирование и мгновенную вставку.

Шаг 1

Шаг 2

Шаг 3

Вырежьте и вставьте следующий код в окно модуля:

Sub Copy_Data () Application.ScreenUpdating = Ложные рабочие листы ("Лист1"). Диапазон ("A1: A10"). Значение = Рабочие листы ("Лист2"). Диапазон ("B1: B10"). Значение Application.ScreenUpdating = True End Sub

Шаг 4

Адаптировать код к вашим конкретным потребностям; как написано, код копирует данные в ячейках с A1 по A10 на листе 1 в ячейки с B1 по B10 на листе 2. Например, если вы хотите скопировать данные из ячеек с C1 по C100 на листе 4 в ячейки с D1 по D100 на листе 5 , вы бы переписали третью строку кода следующим образом:

Шаг 5

Как скопировать программное обеспечение Final Cut Pro с одного компьютера на другой

Как скопировать программное обеспечение Final Cut Pro с одного компьютера на другой

Final Cut Pro - это программное обеспечение для редактирования видео, которое позволяет пользователям создавать рекламные ролики, фильмы, музыкальные клипы и другие типы видео. Он сочетает в себе аудио и видео и позволяет .

Как перенести данные с одного листа на другой в Excel

Как перенести данные с одного листа на другой в Excel

Работать с данными в Microsoft Excel не всегда легко. С помощью формул и функций даже самая простая задача может показаться сложной, даже если на самом деле это не так. Немного.

Как перенести файлы с одного компьютера на другой с помощью кабеля Ethernet

Как перенести файлы с одного компьютера на другой с помощью кабеля Ethernet

Обмен файлами между компьютерами в вашей домашней сети может помочь повысить вашу производительность, будь то работа для бизнеса или для личного удовольствия. Вы можете использовать Ethernet .

Сложный макрос

«Писать макросы не сложно, сложно писать красивые макросы»

Джон Уокенбах

Консультант Microsoft

по проектированию электронных таблиц

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

Синхронизация двух листов в файле Excel

Откроем файл Excel и запустив запись макроса, скопируем из листа Лист1 любую ячейку в лист Лист2.

Теперь давайте откроем код для редактирования: Сервис – Макрос – Макросы … где должно появиться окошечко с вашими записанными макросами. Выделите редактируемый Макрос и нажмите Изменить


Вы перейдёте в режим редактирования VBE ( Visual Basic Editor ). Это специализированный и достаточно навороченный редактор VBA . Не стоит его бояться, слева должна появиться панель (на подобии Проводника) с имеющимися разделами (модулями).


Нас в принципе интересуют разделы с названиями Module 1 и тд. В этих модулях хранится код VBA . Наверху имеется название VBA -проекта (в скобочках название файла Excel ) у нас это ( Macros 2. xls ). Нажмём на этот модуль Module 1.


Перед вами должен появится программный код VBA , давайте разбираться:

Sub Макрос2 () оператор Sub это начало программы, мы говорим VBA , что хотим что-то создать. Макрос2 это название нашего макроса, его можно переименовать.

‘ Макрос2 Макрос все записи, которые имеют пере д собой знак ‘ являются комментариями в программе и не исполняются. Таким образом, скажем можно прокомментировать своё действие Selection . Copy ’ Копируем выбранную ячейку . Или даже временно заблокировать целую строчку программного кода. Всё, что окрашивается зелёным цветом – это комментарии.

Range (“ G 2”). Select Мы выделяем ячейку G 2 на активном листе.

Selection . Copy Копируем эту выделенную ячейку в память компьютера (в буфер обмена).

Sheets (“Лист1”) . Select Находим и выделяем лист Лист1

Range (“Н10”). Select На выделенном листе Лист1 выделяем ячейку Н10

ActiveSheet . Paste На выделенном листе Лист1 вставляем в ячейку Н10 данные из буфера.

End Sub Сообщаем VBA о нашем желании завершить программу.

Вот так наши действия записал компьютер в VBA -код. Так как Лист, из которого нужно копировать данные не указан (указана только ячейка G 2), VBA будет копировать ячейку G 2 из любого листа, в Лист 1 в ячейку H 10.

Естественно, что этот код можно грамотно подредактировать и изменить по своим желаниям.

Синхронизация двух файлов Excel .

В качестве примера, скопируйте на жёсткий диск и откройте (одновременно) два файла:

(Данный пример находится в файле Macros 2. xls в Module 2)

Sub Bridge ()’ Начало программы Bridge

‘ Макрос удалённого доступа

Windows (" Test . xls "). Activate ’ Выбираем файл из которого будем копировать ячейку

Sheets ("Лист1"). Select ’ Выбираем лист в этом файле

' Range (" A 1"). Select ’ Можем выбрать определённую ячейку. Если заблокировать строку – будет выбрана ячейка, которая изначально выделена на листе.

Selection . Copy ’ Копируем ячейку

Windows (" Macros 2. xls "). Activate ’ Выбираем файл в который будем копировать ранее скопированную ячейку

Sheets ("Лист 2"). Select ’ Выбираем лист в этом файле

' Range (" A 1"). Select ’ Выбираем фиксированную ячейку, которая будет постоянна для вставки. Если заблокировать строку – будет выбрана ячейка, которая изначально выделена на листе.

ActiveSheet.Paste’ Вставляем значение

End Sub’ Завершаем программу

Суть этой программки в следующем: мы из открытого файла Test . xls копируем выделенную ячейку на листе Лист 1 в файл Macros 2. xls на лист Лист 2

Записав этот макрос, не забудьте присвоить ему комбинацию клавиш для запуска:

Сервис – Макрос – Макросы …


Выбираем Параметры … и вписываем букву для комбинации (в нашем случае это q ).


Теперь при нажатии комбинации клавиш Ctrl + q , у нас из файла Test . xls копируется выделенная ячейка в файл Macros 2. xls (естественно эти файлы должны быть открыты и рабочие листы чётко прописаны).

Можно украсить свою программу. Скопируйте в файл Macros 2. xls любую картинку (в примере уже имеется кнопка) и выделив эту картинку правой кнопкой мыша выберите опцию Назначить макрос … После чего откроется список макросов – выберите один из них. Теперь нажимая на заветную кнопочку, вы автоматически будете запускать этот макрос. Естественно, с этой кнопкой можно выполнять различные манипуляции: делать надписи, раскрашивать, растягивать и тд.

На одном листе расположен список повторяющихся городов с информацией о предприятиях общепита:

Исходная таблица задания №1

Исходная таблица задания №1

Необходимо данные по каждому городу перенести в одну строку на другом листе (таблица обрезана справа):

Часть результирующего списка задания №1

Часть результирующего списка задания №1

Решение копированием с листа на лист

Это решение значительно проще, чем с использованием массивов, но более медленное. При больших объемах информации обработка может длиться достаточно долго. Решение достигается путем присваивания значений ячеек из таблицы первого листа ячейкам второго листа.

Dim n1 As Long , n2 As Long , n3 As Long , n4 As Long , _ n1 = Sheets ( "Лист1" ) . Cells ( 1 , 1 ) . CurrentRegion . Rows . Count

Переменные:

  • n1 – количество строк в исходной таблице;
  • n2 – номер столбца текущей ячейки исходной таблицы, к которой обращается цикл;
  • n3 – номер строки текущей ячейки на втором листе;
  • n4 – номер столбца текущей ячейки на втором листе;
  • i1 – счетчик цикла For… Next;
  • gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.

Решение с использованием массивов

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

Подпрограммы Kopirovanie и Vstavka используются в цикле For. Next процедуры Resheniye2 по два раза, поэтому их коды вынесены за пределы процедуры Resheniye2 и вызываются по мере необходимости.

Переменные:

  • massiv1 – его элементам присваиваются значения ячеек исходной таблицы;
  • massiv2 – одномерный массив, заполняемый данными из переменной txt1;
  • massiv3 – двумерный массив, заполняемый данными из одномерного массива massiv2 и используемый для вставки очередной строки на второй лист;
  • txt1 – сюда копируются через разделитель значения элементов массива massiv1, предназначенные для заполнения очередной строки на втором листе;
  • n1 – количество строк в исходной таблице;
  • n2 – количество столбцов в исходной таблице;
  • n3 – номер текущей строки на втором листе;
  • n4 – количество столбцов текущей строки на втором листе (соответствует количеству элементов массива massiv2);
  • i1, i2, i3 – счетчики цикла For… Next;
  • gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.

Переменные, использующиеся более чем в одной процедуре, объявлены как глобальные в разделе Declarations программного модуля.


Подобно функции листа в Excel, мы также можем копировать данные вставки или набор значений в VBA. В обычных данных мы используем CTRL + C, чтобы скопировать выборку данных, а затем CTRL + V, чтобы вставить выбранные данные в целевую ячейку. Но то же самое в VBA делают определенные коды, которые мы узнаем в этой статье.

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

Синтаксис для копирования данных в VBA выглядит следующим образом:

Теперь синтаксис для вставки данных в другой лист или в любой другой диапазон ячеек выглядит следующим образом:

Мы используем оператор Dot (.) Для использования методов копирования и вставки в VBA.

Мы можем скопировать весь столбец и вставить его в другой столбец, а также мы также можем скопировать всю строку и вставить ее в другую строку. Мы узнаем все это в этой статье.

Примечание. Чтобы использовать VBA в Excel, убедитесь, что вкладка «Разработчик» включена из вкладки «Файл», а затем в раздел настроек параметров.

Как использовать Excel VBA Copy Paste?

Мы научимся использовать VBA Copy Paste с несколькими примерами в Excel.

Вы можете скачать этот шаблон VBA Copy Paste Excel здесь - Шаблон VBA Copy Paste Excel

VBA Copy Paste - Пример № 1

Для демонстрации у меня есть случайное значение в ячейке A1, которое я хочу скопировать и вставить в ячейку B1, используя код VBA. Посмотрите, какие данные находятся в ячейке A1, а ячейка B1 пуста.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.


Шаг 2: Как только редактор VB откроется, нажмите на кнопку вставки, а затем на кнопку Вставить модуль, чтобы вставить окно кода.


Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


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

Код:


Шаг 5: Скопируйте данные, которые находятся в ячейке A1, с помощью следующего кода.

Код:


Шаг 6: Теперь вставьте скопированные данные в целевую ячейку, которая является ячейкой B1, с помощью следующего кода.

Код:


Шаг 7: Запустите приведенный выше код с помощью кнопки запуска и посмотрите результат в ячейке B1.

VBA Copy Paste - Пример №2

У меня есть данные в столбце C, и я хочу скопировать все данные или значения и вставить их в столбец D, используя код VBA. Посмотрите ниже, что это за данные в столбце C, и что столбец D пуст.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.

Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,

Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 4. Сначала активируйте рабочий лист с помощью следующего кода.

Код:


Шаг 5: Скопируйте данные в столбце C с помощью следующего кода.

Код:


Шаг 6: Теперь, чтобы вставить данные в столбец D, используйте следующий код.

Код:


Шаг 7: Запустите следующий код с помощью кнопки запуска или нажмите F5.

Запустите код, чтобы увидеть следующий результат.

VBA Copy Paste - Пример № 3

Теперь для этого примера у меня есть целый диапазон данных в диапазоне ячеек G1: H3, и я хочу скопировать данные в диапазоне ячеек I1: J3. Посмотрите ниже на данные, которые у меня есть в диапазоне ячеек G1: H3, а диапазон ячеек I1: J3 пуст.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.

Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,

Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


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

Код:


Шаг 5: Скопируйте данные в целевой диапазон ячеек с помощью следующего кода.

Код:


Шаг 6: Теперь, чтобы вставить данные в ячейку назначения, используйте следующий код.

Код:


Шаг 7: Запустите приведенный выше код с помощью кнопки запуска или нажмите F5, чтобы увидеть следующий результат.

VBA Copy Paste - пример № 4

Для этого примера у меня есть данные в строке 10, и я хочу вставить данные в строке 11. Посмотрите ниже, чтобы увидеть, какие данные находятся в строке 10, а строка 11 свободна.


Выполните следующие шаги, чтобы использовать Excel VBA Copy Paste:

Шаг 1: Перейдите на вкладку разработчика и нажмите на Visual Basic, чтобы открыть VB Editor.

Шаг 2: Нажмите на вставленный модуль, чтобы открыть окно кода,

Шаг 3: Объявите подфункцию, чтобы начать писать код.

Код:


Шаг 4. Активируйте рабочий лист, чтобы использовать свойства рабочего листа.

Код:


Шаг 5: Скопируйте строку 10 со следующим кодом.

Код:


Шаг 6: Вставьте данные строки 10 в строку 11 с помощью следующего кода.

Код:


Шаг 7: Запустите приведенный выше код, нажав F5, чтобы увидеть следующий результат.

То, что нужно запомнить

  • Чтобы использовать данные из любого листа для их копирования, нам нужно сначала активировать лист.
  • Точно так же, когда нам нужно вставить данные в любой другой лист в VBA, нам нужно сначала активировать целевой лист.
  • Если мы копируем весь столбец или строку и вставляем данные в любой другой столбец, тогда данные в любом месте строки или столбца в целевых ячейках копируются и вставляются в целевые ячейки. Это может привести к определенным нежелательным данным.
  • Лучший способ скопировать данные - скопировать определенный диапазон и вставить данные в целевые ячейки.

Рекомендуемые статьи

Это было руководство к VBA Copy Paste. Здесь мы обсудили, как использовать Excel VBA Copy paste, а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Читайте также: