Подробно о том, как работать с данным макросом я рассказываю в видео по ссылке (https://rutube.ru/video/ba252faf453768c11c00369e3809f3bb/)
Одним из основных "рутинных" действий в аналитике (помимо функции ВПР, естественно), является постоянное копирование/перемещение/вставка тех или иных данных с одного листа/из одной книги на другой лист/в другую книгу(файл).
Итак, задача:
Дано: Некоторый набор/диапазон данных на листе Excel в одной книге(файле)
Нужно: скопировать эти данные на другой лист/в другую книгу(файл)
Сразу оговорюсь, что методика у решения копирования с листа на лист в одной книге или между книгами схожа, но есть некоторые нюансы. В примере рассмотрим вариант копирования только одной ячейки.
Основные понятия, которые нужно знать
Язык программирования VBA в рамках Excel (а именно на нём пишутся макросы в Excel) в базе своей ссылается на три уровня координат. Координаты, в данном случае, это как почтовый адрес. Основные составляющие у подобного адреса используются в коде макроса и представляют собой:
- Окно (англ. Windows) – определённая книга/окно программы (город)
- Лист (Sheet) – определённый лист внутри выбранной книги (улица)
- Ячейка (Range) – определённая ячейка (ячейки) на выбранном листе (номер дома и квартиры)
Как скопировать данные с одного листа на другой внутри одной книги
В данном примере показано, как скопировать данные между листами в рамках одной книги Excel
В данном варианте примера у нас есть некая книга Excel с названием "Excel 1.xlsb", внутри которой содержаться два листа с именами "Лист 1" и "Лист 2". На "Листе 1" в ячейке "А1" у нас есть информация, которую необходимо скопировать на "Лист 2" в ячейку с аналогичным адресом. Для этого используется следующий код макроса:
Sub Внутри_книги()
'
' Внутри_книги Макрос
'
'
Windows("Excel 1.xlsb").Activate
Sheets("Лист1").Select
Range("A1").Select
Selection.Copy
Sheets("Лист2").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
Блок Windows("Excel 1.xlsb").Activate – отвечает за выбор определённой книги Excel, откуда будем копировать.
Блок Sheets("Лист1").Select – отвечает за выбор определённого листа внутри выбранной книги, с которого будем копировать данные.
Блок Range("A1").Select – отвечает за выбор определённой ячейки (ячеек) для копирования с выбранного листа.
Блок Selection.Copy – действие копирования. Аналогично сочетанию клавиш Ctrl+C.
Блок Sheets("Лист2").Select – отвечает за выбор листа внутри текущей книги, куда будут скопированы данные.
Блок Range("A1").Select – отвечает за выбор ячейки на выбранном листе, с которой начинается вставка скопированной ранее ячейки/ячеек.
Блок ActiveSheet.Paste – действие вставки. Аналогично сочетанию клавиш Ctrl+V.
Как скопировать данные из одной книги в другую книгу
В данном примере показано, как скопировать данные между листами в рамках между двумя разными книгами Excel. Обе книги Excel должны быть открыты.
В данном варианте примера у нас есть некая книга(файл) Excel с названием "Excel 1.xlsb", внутри которой содержаться два листа с именами "Лист 1" На "Листе 1" в ячейке "А1" у нас ест информация, которую необходимо скопировать в другую открытую книгу(файл) Excel с названием "Excel 2.xlsb" на "Лист 1" в ячейку с аналогичным адресом. Для этого используется следующий код макроса:
Sub Книга_в_книгу()
'
' Книга_в_книгу Макрос
'
'
Windows("Excel 1.xlsb").Activate
Sheets("Лист1").Select
Range("A1").Select
Selection.Copy
Windows("Excel 2.xlsb").Activate
Sheets("Лист1").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
Блок Windows("Excel 1.xlsb").Activate – отвечает за выбор определённой книги Excel, откуда будем копировать.
Блок Sheets("Лист1").Select – отвечает за выбор определённого листа внутри выбранной книги, с которого будем копировать данные.
Блок Range("A1").Select – отвечает за выбор определённой ячейки (ячеек) для копирования с выбранного листа.
Блок Selection.Copy – действие копирования. Аналогично сочетанию клавиш Ctrl+C.
Блок Windows("Excel 2.xlsb").Activate – отвечает за переключение на книгу Excel, в которую будут копироваться данные.
Блок Sheets("Лист2").Select – отвечает за выбор листа внутри выбранной книги, куда будут скопированы данные.
Блок Range("A1").Select – отвечает за выбор ячейки на выбранном листе, с которой начинается вставка скопированной ранее ячейки/ячеек.
Блок ActiveSheet.Paste – действие вставки. Аналогично сочетанию клавиш Ctrl+V.
Подписывайтесь на мой канал на
Rutube (https://rutube.ru/channel/30734190/)
Telegram (https://t.me/xxlanalytics)